Во-первых, я хотел бы поблагодарить любого, кто может помочь заранее, я не делал таких пакетных сценариев в течение многих лет, и быть «ржавым» - преуменьшение.У меня есть много файлов на подключенном диске, с которыми я хочу поработать, не рискуя повредить эти файлы, поэтому я пытаюсь создать локальную версию «фальшивых» файлов, чтобы не навредить, если что-то испортится.
Все это делается на компьютере с Windows 7, поэтому я начал с запуска следующего, чтобы получить полный список каталогов для манипулирования:
dir /b M:\ > movies.txt
Оттуда, если я запускаю следующее, яЯ могу получить отдельные 0-байтовые поддельные файлы на основе строк в 'movies.txt':
for /F "eol=; tokens=1* delims=," %%i in (movies.txt) do @echo.> %%i.avi
Или, если я выполню следующее, я получу пустые каталоги на основе 'movies.txt':
for /F "delims=~" %%f in (movies.txt) DO MD "%%f"
Проблема с любой из этих команд заключается в том, что я либо получаю кучу файлов, все сосредоточенные в корневой папке (первая команда for), либо получаю пустые каталоги (вторая команда for)) но я не могу понять, как получить поддельные файлы в папки.
Примеры: если на подключенном диске "M" есть следующие файлы фильмов:
M:\Las Vegas Trip (2009)\Las Vegas Trip (2009).avi
M:\Las Vegas Trip (2010)\Las Vegas Trip (2010).avi
then 'movies.txt 'будет выглядеть как:
Las Vegas Trip (2009)
Las Vegas Trip (2010)
и первая команда приведет к:
D:\Las Vegas Trip (2009).avi
D:\Las Vegas Trip (2010).avi
или вторая команда приведет к:
D:\Las Vegas Trip (2009)\
D:\Las Vegas Trip (2010)\
Но мне нужно:
D:\Las Vegas Trip (2009)\Las Vegas Trip (2009).avi
D:\Las Vegas Trip (2010)\Las Vegas Trip (2010).avi
Я искал в интернете несколько дней и, похоже, не могу найти ничего, что дало бы мне желаемые результаты ... Я нашел немного похожую «проблему» в другом месте, где они хотели создать папки на основе файла.имя, но они хотели автоматически переименовать имя файла конечного результата, который не будет работать.(Да, я пытался изменить их команду, чтобы работать, но никакие изменения, которые я мог придумать, не дали бы ничего, кроме ошибок.) Вы можете увидеть вышеупомянутый метод здесь (на сайте).
Поправки, которые я предпринял в коде по ссылке, включали:
for /f %%f in ('dir *.png /b') do md %%~nf & move %f .\%%~nf\0000.png <- original
for /f %%f in ('dir *.avi /b') do md %%~nf & move %f .\%%~nf\*.avi
for /f %%f in ('dir *.avi /b') do md %%~nf & move %f .\%%~nf\
for /f %%f in ('dir *.avi /b') do md %%~nf & move %f .\%%~nf
В каждом случае мне выдавалась ошибка в связи с заключительной частью раздела кода "%% ~ nf * .avi".
Любые идеи о том, как изменить этот код, чтобы он работал на меня, или что-то еще, что сработало бы, будут очень благодарны.
------- Отредактированная часть ------- Я попытался изменить свой командный файл, чтобы использовать команду, представленную в посте ниже, и, похоже, она не работает:
cd Movies2
dir /b %MovieSource% > movies.txt
for /f "delims=" %%f in ('dir *.avi /b') do md "%%~nf" & move "%~f" ".\%%~nf\*.avi"
rem for /F "eol=; tokens=1* delims=," %%i in (movies.txt) do @echo.> %%i.avi
rem FOR /F "delims=~" %%f in (movies.txt) DO MD "%%f"
Я также попытался поставить первую команду 'for' второй и unREM'd командудругая команда 'for', чтобы она заранее создала * .avi, думая, что это может сработать, но попытка в любом случае выдает ту же ошибку.
The following usage of the path operator in batch-parameter
substitution is invalid: %~f" ".\%%~nf\*.avi"