我有以下代码,其中我系统地浏览并单独压缩每个文件。我不关心文件名是什么,但我希望它或多或少被隐藏,所以将每个文件称为“文件 1”、“文件 2”、“文件 3”等。
但是我该如何将变量传递fn=file!count!
给 7z.exe 命令行?我添加了echo
命令只是为了确保变量正常工作,而且确实如此。但是我该如何让 fn 在 7z 命令行中解析为实际的“file1”、“file2”等?我试过 %、!、%!、!%、%%... 哈哈。它只会给出一个空白文件名或 !fn! 或 %fn%,而不是实际的变量值。
代码在这里,提前感谢任何帮助:
setlocal enableextensions enabledelayedexpansion
cd /d E:\Temp\ziptest\Documents
set /A count=0
for /r %%a in (*) do (
cd "%%~pa"
set /A count += 1
echo !count!
set fn=file!count!
echo !fn!
pause
REM 7z.exe a -mx9 -mmt12 -sdel -pt3st! -mhe=on "!fn!.7z" "%%~nxa"
)
endlocal
输出示例,您可以看到它正确递增并且正确解析文件##:
E:\Temp\ziptest>setlocal enableextensions enabledelayedexpansion
E:\Temp\ziptest>cd /d E:\Temp\ziptest\Documents
E:\Temp\ziptest\Documents>set /A count=0
E:\Temp\ziptest\Documents>for /R %a in (*) do (
cd "%~pa"
set /A count += 1
echo !count!
set fn=file!count!
echo !fn!
pause
REM 7z.exe a -mx9 -mmt12 -sdel -pt3st! -mhe=on "!fn!.7z" "%~nxa"
)
E:\Temp\ziptest\Documents>(
cd "\Temp\ziptest\Documents\"
set /A count += 1
echo !count!
set fn=file!count!
echo !fn!
pause
REM 7z.exe a -mx9 -mmt12 -sdel -pt3st! -mhe=on "!fn!.7z" "Book1.xlsx"
)
1
file1
Press any key to continue . . .
E:\Temp\ziptest\Documents>(
cd "\Temp\ziptest\Documents\"
set /A count += 1
echo !count!
set fn=file!count!
echo !fn!
pause
REM 7z.exe a -mx9 -mmt12 -sdel -pt3st! -mhe=on "!fn!.7z" "COVID-19 Oakland County.xlsx"
)
2
file2
Press any key to continue . . .
答案1
我有补牙材料,你需要做的就是call something
注意:删除多余的空间并使用set /A count[espace]+=1
@echo off
并替换%%~pa
到%%~dpa
@echo off
cd/d "E:\Temp\ziptest\Documents"
setlocal enabledelayedexpansion
for /r %%a in (*) do (
set /A "count+=1+0"
cd /d "%%~dpa"
set "fn=file!count!"
echo\!fn!
echo\!count!
7z.exe a -mx9 -mmt12 -sdel -pt3st -mhe=on "!fn!.7z" "%%~nxa"
)
endlocal
- 对压缩选项进行排序...
@echo off
cd /d "E:\Temp\ziptest\Documents" && setlocal enabledelayedexpansion
for /r %%a in (*)do set /A "count+=1+0" && cd /d "%%~dpa" && call set "fn=file!count!" && (
echo\!fn! & echo\!count! && call 7z.exe a -mx9 -mmt12 -sdel -pt3st! -mhe=on "!fn!.7z" "%%~nxa"
)
endlocal