Мне часто приходится отслеживать файлы на работе, вытягивая сотню из списка из тысячи, поэтому я создал командный файл, который скопировал бы файлы в том месте, где перечислены в каталоге csv в каталоге пакетных файлов, а затем вставляют их в папку на моем рабочем столе.Пакетный файл для копирования списка файлов, включая подкаталоги
Это сработало, но мне часто приходится делать это для сотен файлов по десяткам или около того каталогов, поэтому я попытался изменить его, чтобы включить подкаталоги. У меня проблема с работой, и мне было интересно, могут ли отличные люди в StackOverflow. Благодаря!
@echo on
set theDest="%USERPROFILE%\Desktop\Batch Copies %date:/=%"
set /p MY_TEXT=<FileList.csv
echo.%MY_TEXT%
set MY_TEXT=%MY_TEXT:"",""=,%
echo.%MY_TEXT%
if not exist %theDest% md %theDest%
pause
for /R %MY_TEXT% %%G IN (.) do (
for /F "skip=1 delims=" %%f in (FileList.csv) do (
if exist "%MY_TEXT%\%%f.*" (
copy "%MY_TEXT%\%%f.*" %theDest%
) else (
if exist "%MY_TEXT%\%%f" (
copy /R "%MY_TEXT%\%%f" %theDest%
) else echo "%MY_TEXT%\%%f" does not exist && echo 0 file^(s^) copied. && echo ERROR: %%f not found && echo. && pause)
)
)
echo. && echo. && echo Process Completed. &&echo.
pause
Часть проблемы я просто получаю в партию, когда я писал, а затем покинула его, и я пытаюсь вернуться и выяснить, как все работает, так что я, вероятно, испортил его больше возможностей, чем один ,
Таким образом, для/Р% MY_TEXT% %% G В делают называть MyCopyFunction (.): MyCopyFunction для/F "пропустить = 1 delims =" %% п в (FileList.csv) делают \t, если существует «%% е. *»( \t \t копия "%% е. *" % theDest% \t \t) еще ( \t, если существует "%% F"( \t \t копия "%% F" % theDest% \t \t) – hype124
Извините, мне не удалось заставить его работать. Является ли это ссылкой на переменную f без объявления ее в текущем каталоге? – hype124
Вы писали: 'for/R% MY_TEXT% %% G'. Я не знаю, почему '% MY_TEXT%' находится в середине цикла ?? – abelenky