文件夹名中的空格导致批处理文本文件中列出的子目录失败

Spaces in foldername causing fail in batch processing of sub-directories listed in text file

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

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

从 Top-Folder,我想要 运行 一个单独压缩每个子文件夹的批处理脚本。所以在上面的例子中,我有四个 zip 文件,每个子文件夹。它们将与原始文件夹并存。

文件夹-1.zip(来自 Bob)

文件夹-1.zip(来自史蒂夫)

文件夹-2.zip(来自史蒂夫)

文件夹-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-Zipz.exe" a "%%X.zip" "%%X\"

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

真实文件夹示例structure/names:

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

2005-05-11 - Tappehallerne,哥本哈根/[PRO #1b] HDTV

我需要更改什么才能将子文件夹名称写入第二个文本文件以便脚本的其余部分执行?

for /F "delims=" %%i in (list.txt) do dir "%%i" /AD /S /B >> subfolders.txt

您需要 "quote the name" 否则 dir 会查找 "quote" 和 "the" 以及 "name"