我有以下代码,我系统地检查并单独压缩每个文件。我不在乎文件名是什么,但我希望它或多或少地隐藏起来,所以只会调用每个文件“文件 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 . . .
我有馅料,你需要做的就是
call something
Obs.:删除多余的空间并使用并替换为
set /A count[espace]+=1
@echo off
%%~pa
%%~dpa