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"
)

当我运行批处理文件时,什么也没有发生,也没有创建文件夹

4

2 回答 2

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 是一个很好的问题,我喜欢它。☺</p>

于 2013-07-30T16:32:58.200 回答
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替换为以节省每行三个击键。两种方式的工作方式相同,并且较长的名称可能更清晰以供将来参考。)

于 2013-07-30T16:23:22.043 回答