私は体系的に各ファイルを個別に調べて圧縮する次のコードを持っています。ファイル名は関係ありませんが、多かれ少なかれ非表示にしたいので、各ファイルを「ファイル1」、「ファイル2」、「ファイル3」などと呼びます。
しかし、変数fn=file!count!
を7z.exeコマンドラインに渡すにはどうすればよいですか?変数が機能していることを確認するために、echo
コマンドを追加しました。しかし、7zコマンドラインでfnを実際の「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
正しくインクリメントされ、file ##も正しく解決されていることを確認できる出力の例:
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 .:セット/ Aカウント+ = 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!
echo\ 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 echo\7z.exe a -mx9 -mmt12 -sdel -pt3st! -mhe=on "!fn!.7z" "%%~nxa"
)
endlocal