2

Я сделал эту команду, чтобы переместить указанные файлы во всех подпапках в указанное место назначения, а затем удалить все пустые подпапки.

Копирование всех PDF-файлов в подпапках в текущий каталог

for /f "tokens=*" %d in ('dir *.pdf /b/s') do move /y "%d" .\

а затем удаляя все пустые папки

for /f "tokens=*" %d in ('dir /ad/b/s ^| sort /R') do rd "%d"

Команды выглядят хорошо, когда я копирую их и вставляю в командную строку, но не когда запускаю их внутри командного файла. Что я забыл? И могу ли я доверять этой команде в любых условиях?

2 ответа2

2

Когда for используется внутри пакетного скрипта, вам нужно удвоить % .

C:\>for /?
(...)

To use the FOR command in a batch program, specify %%variable instead
of %variable.  Variable names are case sensitive, so %i is different
from %I.

(...)
0

Рабочий каталог при запуске этого сценария из командной строки - % HOMEPATH% (или каталог, который вы просматривали), при запуске его из файла сценария в качестве домашнего пути используется каталог, в котором расположен сценарий. поэтому вывод не будет таким же.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .