2

У меня есть эти строки в файле .bat:

@echo off
pushd %*
for %%j in (*) do type nul > "%%j"
popd

Если я запускаю его, он изменяет все размеры файла на 0, включая командный файл. Если я использую его в CMD, я могу указать имя папки для изменения как: makeitzero.bat FOLDER_NAME

Но я немного разбираюсь в программировании, поэтому мне интересно, могу ли я включить подпапки (если я запускаю их ИЛИ из командной строки)?

Спасибо!


Примечание: я новый пользователь на этом сайте, и я не совсем уверен, как правильно его использовать, поэтому, если я допустил ошибку (неправильный заголовок, неверные теги, нерелевантная информация и т.д.) Я был бы рад услышать это и сделать это лучше в следующий раз.


Редактировать 1: for /r сделал трюк. Это работает как шарм:

@echo off
for /r "D:\DeleteInThis" %%a in (.) do (
    pushd %%a
    pushd %*
    for %%j in (*) do type nul > "%%j"
    popd
    )

Спасибо!

1 ответ1

2

FOR имеет несколько переключателей режима, чтобы заставить команду работать по-разному. Вы должны проверить FOR /F который позволяет вам просматривать выходные данные команды. Используйте команду DIR для вывода списка файлов и каталогов во всех подкаталогах. Используйте ключ /S чтобы включить все подкаталоги, и /B чтобы получить простой вывод (только полный путь к файлам и папкам).

dir /s /b ".\*"

Чтобы объединить вывод DIR с циклом, измените команду FOR на что-то вроде этого:

for /f "tokens=*" %%j in ('dir /s /b ".\*"') do type nul > "%%j"

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