У меня есть ряд файлов в папке с именами как test! - 01.avi
. Я хочу сделать новую папку для каждого файла с тем же именем и затем переместить файл в ту папку. У меня есть все, но как сдержаться"!" и скопируйте файл в папку.
@ECHO OFF
setlocal enabledelayedexpansion
set "sourcedir=Z:\test"
set folder=null
set file=null
PUSHD %sourcedir%
FOR /f "tokens=* delims=?" %%a in ( 'dir /b /a-d "*[720p].*"'
) DO (
SET file=%%a
FOR /f "tokens=1,2,* delims=]-" %%b in ("%%a" "[*] * - * [720p].*"
) DO (
FOR /f "tokens=* delims= " %%e in ("%%c"
) DO (
SET folder=%%e
FOR /l %%f in (1,1,31) do if "!folder:~-1!"==" " set folder=!folder:~0,-1!
MD "!folder!"
MOVE "!file!" .\"!folder!"\
)
)
)
POPD
GOTO :EOF
Спасибо за взгляд
Лучше справиться с именами файлов, отключив отложенное раскрытие . Переменные, назначенные в кодовом блоке (
)
, обрабатываются в подпрограмме следующим образом:
@ECHO OFF
SETLOCAL EnableExtensions DisableDelayedExpansion
set "sourcedir=D:\bat\Unusual Names"
PUSHD %sourcedir%
dir /b /a-d "*!a*.*"
FOR /f "tokens=* delims=?" %%a in ( 'dir /b /a-d "*!a*.*"') DO (
SET "file=%%~nxa"
rem observe instructions "make a new folder for each file with the same name"
rem suppose that without extension
SET "folder=%%~dpna"
call :DoDelayedExpansion
)
POPD
ENDLOCAL
goto :eof
:DoDelayedExpansion
echo(
echo MD "%folder%\" 2>NUL
echo MOVE "%file%" "%folder%\"
goto :eof
Следующий сценарий дает пример только с использованием моего существующего набора тестовых данных. Примечание.
set "variable = value"
с двойными кавычками, чтобы экранировать некоторые символы специального значения в пакетном сценарии, например |
, &
, <
, >
и т. Д., И чтобы не было (случайно забытых) конечных пробелов; MD
и MOVE
являются просто echo
редактируемыми для целей отладки; удалить все echo
не раньше, чем будет выполнено отладка. Вывод :
==>D:\bat\SF\694616.bat
01exclam!ation.txt
02exc!lam!ation.txt
MD "D:\bat\Unusual Names\01exclam!ation\"
MOVE "01exclam!ation.txt" "D:\bat\Unusual Names\01exclam!ation\"
MD "D:\bat\Unusual Names\02exc!lam!ation\"
MOVE "02exc!lam!ation.txt" "D:\bat\Unusual Names\02exc!lam!ation\"
==>
Ресурсы (обязательное чтение):
% ~ a
и т. Д. Специальная страница) Аргументы командной строки (Параметры)