Перемістіть усі вказані файли у всіх папках до вказаного пункту призначення


2

Я зробив цю команду для переміщення вказаних файлів у всіх папках до вказаного пункту призначення та видалення всіх порожніх підпапок.

Копіювання всіх PDF-файлів у підпапки в поточний dir

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"

Команди виглядають добре, коли я копіюю її та вставляю в командний рядок, але не тоді, коли я запускаю її у пакетному файлі. Що я забуваю? І чи можу я довіряти цій команді в будь-яких умовах?


1
якщо ви хочете знати, чи можете ви довіряти команді FOR, і вам слід робити це завжди .. пишіть ехо відразу після DO, щоб воно скидало те, що є після відлуння на консоль, щоб ви могли бачити, що воно буде виконувати. (також коли це робите, поставте символ AT перед відлунням, як @echo)
барлоп

Відповіді:


2

Якщо forвикористовується всередині пакетного сценарію, вам потрібно подвоїти %.

C: \> для /?
(...)

Щоб використовувати команду FOR у пакетній програмі, вкажіть натомість змінну %%
з змінної% .   Імена змінних залежать від регістру, тому% i відрізняється
від% I.

(...)

Божевільний я ..! З курсів у вас є права !!! Я думаю, що я витратив занадто багато часу за своїм ПК на сьогоднішній день .. Дякую!
Азіз

0

Робочий каталог, коли ви запускаєте цей скрипт із командного рядка, є % HOMEPATH% (або каталог, у який ви переглядали), його запуск із файлу сценарію використовує каталог, де сценарій розташований як домашній шлях. тому вихід не буде однаковим.


Ви також маєте на увазі, що мені потрібно змінити ". \" На "% HOMEPATH%", коли я хочу перейти в поточний dir при виконанні цієї команди з пакетного файлу? Я просто спробував це, але, схоже, це працює в обох випадках. Я маю пакет у своїй папці інструментів, яка визначена у PATH, і запускаю її з будь-якого каталогу.
Азіз

Під час запуску програми або скрипту з командного рядка він завжди успадковує "робочий каталог" оболонки. Він ніколи не скидається %HOMEPATH%.
grawity
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.