目录中带空格的每一行的批处理
Batch for each line in directory with spaces
我正在尝试创建一个批处理文件,将主文件夹中的所有文件夹压缩为与子文件夹同名的单个 zip 文件。
示例文件夹结构:
所以在主文件夹中,zip 需要与子文件夹具有完全相同的名称和内容。
我现在的代码贴在下面。出现问题是因为我必须引用路径名,因为它们包含空格,因此第 4 行中的 "%CD%\folders.txt"
未解析为文件名,而是解析为乱码输入字符串。我怎样才能让它工作?
P.s。我不需要临时 folders.txt,这刚好最接近预期的效果。
set zip="P:\Programma's\x64\WINRAR\rar.exe" a -r -u -ep1
dir "%CD%" /d /ad /s /b > "%CD%\folders.txt"
set /a COUNT=0
pause
for /f "usebackq delims=|" %%f in ("%CD%\folders.txt") do (
echo %%f
%zip% "%CD%\%%~nf.zip" %%f\* >nul
set /a COUNT+=1)
del "%CD%\folders.txt"
echo.
echo ....................................................
echo.
echo Compressed %COUNT% folders
pause
也许使用一个变量来存储它:
set cdfolder="%CD%\folders.txt"
然后随处使用它
...
dir "%CD%" /d /ad /s /b > %cdfolder%
...
我正在尝试创建一个批处理文件,将主文件夹中的所有文件夹压缩为与子文件夹同名的单个 zip 文件。
示例文件夹结构:
所以在主文件夹中,zip 需要与子文件夹具有完全相同的名称和内容。
我现在的代码贴在下面。出现问题是因为我必须引用路径名,因为它们包含空格,因此第 4 行中的 "%CD%\folders.txt"
未解析为文件名,而是解析为乱码输入字符串。我怎样才能让它工作?
P.s。我不需要临时 folders.txt,这刚好最接近预期的效果。
set zip="P:\Programma's\x64\WINRAR\rar.exe" a -r -u -ep1
dir "%CD%" /d /ad /s /b > "%CD%\folders.txt"
set /a COUNT=0
pause
for /f "usebackq delims=|" %%f in ("%CD%\folders.txt") do (
echo %%f
%zip% "%CD%\%%~nf.zip" %%f\* >nul
set /a COUNT+=1)
del "%CD%\folders.txt"
echo.
echo ....................................................
echo.
echo Compressed %COUNT% folders
pause
也许使用一个变量来存储它:
set cdfolder="%CD%\folders.txt"
然后随处使用它
...
dir "%CD%" /d /ad /s /b > %cdfolder%
...