Вы можете использовать цикл FOR /F и установить "USEBACKQ TOKENS=2 DELIMS=_ "
таким образом, чтобы проанализировать и получить строку даты из имени файла для повторного использования в последующих командах соответственно для необходимых операций.
Затем вы будете использовать смесь команд, таких как DIR
, MD
, XCOPY
и DEL
чтобы выполнить файловые операции, чтобы переместить их в новую папку с датой.
Примечание. Обязательно укажите значение переменной Src=
для папки, в которой находятся эти файлы, и обязательно укажите значение переменной Dest=
для папки, в которую будут перемещены файлы, а папка yyyy-mm-dd
будет созданный для этих файлов, чтобы проживать после перемещения.
@ECHO ON
SET "Src=C:\Folder\Source"
SET "Dest=C:\Folder\Destination"
FOR /F "USEBACKQ TOKENS=2 DELIMS=_ " %%A IN (`DIR /B "%Src%\*.txt"`) DO (
IF NOT EXIST "%%~A" MD "%%~A"
XCOPY /F /Y "%Src%\*%%~A*.txt" "%Dest%\%%~A\" && DEL /Q /F "%Src%\*%%~A*.txt"
)
EXIT
Дополнительные ресурсы
- FOR /F
FOR /?
delims=xxx - specifies a delimiter set. This replaces the
default delimiter set of space and tab.
tokens=x,y,m-n - specifies which tokens from each line are to
be passed to the for body for each iteration.
This will cause additional variable names to
be allocated. The m-n form is a range,
specifying the mth through the nth tokens. If
the last character in the tokens= string is an
asterisk, then an additional variable is
allocated and receives the remaining text on
the line after the last token parsed.
usebackq - specifies that the new semantics are in force,
where a back quoted string is executed as a
command and a single quoted string is a
literal string command and allows the use of
double quotes to quote file names in
file-set.
XCOPY
- DEL
- DIR