У меня есть пакетный файл, который создает папки в других папках клиента. Я добавил еще одну папку, которую нужно сделать, теперь файл bat не будет работать. Я что-то здесь упускаю?
@echo off
set Dir=y:\(Directory of companies)
set Year=(The year I want the folders added to)
setlocal enabledelayedexpansion
for /f "delims=" %%D in ('dir /ad/b !Dir!') do (
if not exist "!Dir!\%%D\!Year!" (
md "!Dir!\%%D\!Year!"
md "!Dir!\%%D\!Year!\Tax"
md "!Dir!\%%D\!Year!\Tax\Estimated_Tax"
md "!Dir!\%%D\!Year!\Tax\Info_for_tax_return"
md "!Dir!\%%D\!Year!\Year_End_Planning"
)
)
)
Info_for_tax_return
это новая строка, которую я добавил, что заставило файл bat перестать работать. Ценю твою помощь. Спасибо
windows
batch-file
Bigwil
источник
источник
Ответы:
У вас больше закрывающих скобок, чем открывающих в вашем
for
блоке:Снимите дополнительную закрывающую скобку и попробуйте снова:
источник
Замечания:
setlocal disabledelayedexpansion
потому что вам не нужно включать отложенное расширениеset "Year=2015"
заключены в двойные кавычки, чтобы избежать лишних пробеловset "Dir=y:\Directory of companies"
такжеmd "%Dir%\%%D\%Year%" 2>nul
подавить сообщения об ошибках (перенаправить их в ад2>nul
), если целевой каталог существует. Поэтому вам не нужно проверять, существует ли он или нетif not exist "!Dir!\%%D\!Year!" (...)
запретили создавать каталоги, добавили строку и запустили более одного раза ...Этот скрипт должен работать для вас.
источник