2013-07-30 6 views
0

В настоящее время я пытаюсь создать папки с подпапками с использованием пакетного файла - я использовал код ниже, но он не работает - в файле txt есть список основных папок, а затем другие строки это подпапки, которые должны быть созданы в каждой папке.создание папки и подпапки с пакетом

@echo off 
for /F "tokens=*" %%* in (jobid.txt) 
do(mkdir 
"C:\joblist\%%*" 
"C:\joblist\%%*\Loss Sheet" 
"C:\joblist\%%*\Authorization" 
"C:\joblist\%%*\Certificate of Satisfaction" 
"C:\joblist\%%*\Drying Lobs-Outlines" 
"C:\joblist\%%*\Lead Documentation" 
"C:\joblist\%%*\Photos" 
"C:\joblist\%%*\Waiver of Liability" 
"C:\joblist\%%*\Mold Reports-Documentation" 
"C:\joblist\%%*\Bank-Mortgage Doc" 
"C:\joblist\%%*\Invoice" 
"C:\joblist\%%*\Payment-Checks" 
"C:\joblist\%%*\Job Costs-Vendors" 
"C:\joblist\%%*\Emails" 
"C:\joblist\%%*\Notes" 
) 

, когда я запустить командный файл ничего не происходит и никаких папок не создаются

ответ

2

попробовать это:.

@ECHO OFF &SETLOCAL 
for /F "delims=" %%a in (jobid.txt) DO (
    FOR %%x IN (
    "C:\joblist\%%a" 
    "C:\joblist\%%a\Loss Sheet" 
    "C:\joblist\%%a\Authorization" 
    "C:\joblist\%%a\Certificate of Satisfaction" 
    "C:\joblist\%%a\Drying Lobs-Outlines" 
    "C:\joblist\%%a\Lead Documentation" 
    "C:\joblist\%%a\Photos" 
    "C:\joblist\%%a\Waiver of Liability" 
    "C:\joblist\%%a\Mold Reports-Documentation" 
    "C:\joblist\%%a\Bank-Mortgage Doc" 
    "C:\joblist\%%a\Invoice" 
    "C:\joblist\%%a\Payment-Checks" 
    "C:\joblist\%%a\Job Costs-Vendors" 
    "C:\joblist\%%a\Emails" 
    "C:\joblist\%%a\Notes" 
    ) DO (
    ECHO MD "%%~x" 
    ) 
) 

Посмотрите на выход и удалите слово echo до MD, если он выглядит хорошо.

Tihs - хороший вопрос, мне он нравится.

+0

Просто из любопытства, зачем бросать второй цикл и переменную, когда они не нужны? –

+0

спасибо за помощь, ребята – user2149913

0

Я не думаю, что вы понять использование переменного цикла в вашем for. * имеет особое значение в окне команд (поле DOS); это подстановочный знак. Вам также необходимо повторить команду mkdir для каждой папки, а не только для первой.

Попробуйте использовать фактическое имя переменной вместо:

@echo off 
for /F "tokens=*" %%i in (jobid.txt) do (
    mkdir "C:\joblist\%%*" 
    mkdir "C:\joblist\%%*\Loss Sheet" 
    mkdir "C:\joblist\%%*\Authorization" 
    mkdir "C:\joblist\%%*\Certificate of Satisfaction" 
    mkdir "C:\joblist\%%*\Drying Lobs-Outlines" 
    mkdir "C:\joblist\%%*\Lead Documentation" 
    mkdir "C:\joblist\%%*\Photos" 
    mkdir "C:\joblist\%%*\Waiver of Liability" 
    mkdir "C:\joblist\%%*\Mold Reports-Documentation" 
    mkdir "C:\joblist\%%*\Bank-Mortgage Doc" 
    mkdir "C:\joblist\%%*\Invoice" 
    mkdir "C:\joblist\%%*\Payment-Checks" 
    mkdir "C:\joblist\%%*\Job Costs-Vendors" 
    mkdir "C:\joblist\%%*\Emails" 
    mkdir "C:\joblist\%%*\Notes" 
) 

(Так же, как примечание, md представляет собой сокращенную mkdir, так что вы можете заменить все mkdir команды с md вместо того, чтобы сохранить три нажатия клавиш в строке. в любом случае работает одинаково, и чем дольше имя может быть более понятным для дальнейшего использования)