【问题标题】:Spaces in foldername causing fail in batch processing of sub-directories listed in text file文件夹名称中的空格导致批处理文本文件中列出的子目录失败
【发布时间】:2017-02-06 10:10:35
【问题描述】:

我的最终目标是一举从顶层目录单独压缩主文件夹的子文件夹。所以想象一下这个结构

Top-Folder
  -Bob
    --Folder-1
  -Steve
    --Folder-1
    --Folder-2
  -Tim
    --Folder-1

从顶级文件夹,我想运行一个批处理脚本,分别压缩每个子文件夹。所以在上面的例子中,我有四个 zip 文件,每个子文件夹。它们将位于原始文件夹旁边。

folder-1.zip(来自 Bob)

folder-1.zip(来自史蒂夫)

folder-2.zip(来自史蒂夫)

folder-1.zip(来自 Tim)

到目前为止我有这个:

    if exist list.txt del list.txt
    if exist subfolders.txt del subfolders.txt
    REM create list of all users (top folders)
    dir "F:\Top-Folder" /AD /B >list.txt
    REM create list of all subfolders
    for /F "delims=" %%i in (list.txt) do dir %%i /AD /S /B >> subfolders.txt
    REM now you have all subfolders in subfolders.txt so you can zip them one by one
    for /F "delims=" %%X in (subfolders.txt) do "c:\Program Files\7-Zip\7z.exe" a "%%X.zip" "%%X\"

使用简单的测试文件夹名称是成功的。但是,使用我的真实文件夹名称,虽然 list.txt 是使用顶级文件夹名称生成的,但 subfolders.txt 没有创建,因此无法进行压缩。

真实文件夹结构/名称示例:

2005-05-11 - Tappehallerne,哥本哈根/[AUD #1] MD(M) - CDR(1)

2005-05-11 - Tappehallerne,哥本哈根/[PRO #1b] 高清电视

为了让脚本的其余部分执行而将子文件夹名称写入第二个文本文件,我需要进行哪些更改?

【问题讨论】:

    标签: windows batch-file 7zip


    【解决方案1】:
    for /F "delims=" %%i in (list.txt) do dir "%%i" /AD /S /B >> subfolders.txt
    

    您需要“引用名称”,否则 dir 会查找“引用”、“该”和“名称”

    【讨论】:

      猜你喜欢
      • 2018-12-23
      • 2010-10-10
      • 2013-07-18
      • 1970-01-01
      • 1970-01-01
      • 2016-09-11
      • 1970-01-01
      • 1970-01-01
      • 2018-09-24
      相关资源
      最近更新 更多