Пакетний сценарій для видалення файлів


96

У мене є пакетний сценарій наступним чином.

D:
del "D:\TEST\TEST1\Archive\*.TSV" 
del "D:\TEST\TEST1\Archive\*.TXT"
del "D:\TEST\TEST2\Archive\*.TSV" 
del "D:\TEST\TEST2\Archive\*.TXT"
del "D:\TEST\TEST 100%\Archive\*.TSV" 
del "D:\TEST\TEST 100%\Archive\*.TXT"

Наведений вище код видаляє всі файли ".txt" і ".tsv" з усіх папок, крім папки TEST 100%. Для видалення файлів з TEST 100%я отримую помилку як The Path could not be found. Я думаю, символ% в назві папки створює проблему. Хто-небудь може допомогти мені вирішити проблему та видалити файли з папки TEST 100%?


Чому у вас цитата в першому рядку? Крім того, чому ви маєте на увазі диск, коли ваш командний файл уже змінено на цей диск першим рядком? Я спробував повторити вашу проблему, і все вдалося. Ви підтвердили, що Архів існує у тесті на 100%?
RonaldBarzell

Відповіді:


112

Вам потрібно втекти% з іншим ...

del "D:\TEST\TEST 100%%\Archive*.TXT"

Я не можу говорити за OP, але в моїй системі немає проблем з пошуком шляху з%, а втеча з %% не дає системі знайти його.
RonaldBarzell

@ user1161318 - Я протестував його на Windows 7. Без ескапату в командному файлі виводиться "Система не може знайти вказаний шлях". Як я розмістив, це працює.
Russ Freeman

Добре, на XP я отримую протилежні результати. Він знаходить шлях з%, але не може знайти його з %%.
RonaldBarzell

5
Я припускаю, що ви робите це з командного рядка, а не з командного файлу.
Russ Freeman

2
Ви, мабуть, праві. Я постійно забуваю, що в командному файлі% є змінним префіксом, і вам потрібно його уникнути. +1
Рональд Барзелл

12

Існує кілька способів робити щось у пакетному режимі, тому, якщо втеча з подвійним відсотком %%не працює для вас, ви можете спробувати щось подібне:

set olddir=%CD%
cd /d "path of folder"
del "file name/ or *.txt etc..."
cd /d "%olddir%"

Як це працює:

set olddir=%CD%встановлює змінну "olddir"або будь-яке інше ім'я змінної, яке вам подобається, до каталогу, з якого був запущений пакетний файл.

cd /d "path of folder"змінює поточний каталог, який буде переглядати пакет. зберігайте котирування та змініть шлях до папки, до якої ви коли-небудь прагнули.

del "file name/ or *.txt etc..."видалить файл у поточному каталозі, до якого переглядає ваш пакет, просто не додайте шлях до каталогу до імені файлу, а просто вкажіть повне ім’я файлу, або, щоб видалити кілька файлів з однаковим розширенням з *.txtбудь-яким розширенням, яке вам потрібно.

cd /d "%olddir%"приймає змінну, збережену за вашим старим шляхом, і повертається до каталогу, з якого ви почали пакет, це не важливо, якщо ви не хочете, щоб пакет повернувся до попереднього шляху до каталогу, і, як зазначено до того, як ім'я змінної можна змінити на що завгодно, змінивши set olddir=%CD% line.


Це найкраще зробити через pushd "folder" && del "filename" & popd.
Нуно Андре

10

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

cd C:\Users\User\Detsktop\
rd /s /q SOFTWARE

це призведе до видалення всієї папки під назвою програмне забезпечення та всіх її файлів та підпапок

Переконайтеся, що ви видалили правильну папку, тому що в ній немає опції Так / Ні


4

Врахуйте, що файли, які потрібно видалити, мають розширення txtі знаходяться там D:\My Folder, де ви можете скористатися наведеним нижче кодом всередині файлу bat.

cd "D:\My Folder"
DEL *.txt 

-7

у пакетному коді ваш шлях не повинен містити пробілу, тому, будь ласка, змініть назву вашої папки з "TEST 100%" на "TEST_100%", а ваш новий код буде del "D: \ TEST \ TEST_100% \ Archive * .TXT"

сподіваюся, це вирішить вашу проблему


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