2017-05-01 19 views
0

元のファイルを読み込み、元のファイル名で出力ファイルの名前を変更する方法で、ファイルを圧縮して、出力ファイルの名前を変更しようとしています。現在、アーカイブディレクトリにシェルを作成し、そのファイルをファイルにコピーすることで、ファイルを圧縮するバッチファイルを実行しています。また、イベントのログファイルを作成しています。私は圧縮を行うために7-Zipコマンドラインバージョンを使用しています。

Windowsのバッチファイルは、圧縮しているファイルで出力ファイルの名前を変更します。

echo Start Compression 

7za a -t7z "c:\Archive_Directory\%time:~0,2%%time:~3,2%-%date:~-10,2%%date:~7,2%%date:~-4,4%.7z" "C:\File_To_Compress\*.xls" >"C:\Users\Compression_Logs\_%time:~0,2%%time:~3,2%-%date:~-10,2%%date:~7,2%%date:~-4,4%.log" 

echo Finish Compression  

timeout /t 30 

バッチファイルを作成/必要なファイルを圧縮しているため、タイムスタンプの同じ名前のファイルすべてを提供します。ちょうど私がすべてのファイルが元のファイル名をどのように持つことができるか把握したいならば。私が持っているものの

出力例:
元のファイル名 - Source.xlsを
圧縮ファイル      - 1030-05012017.7z
ログファイル                               〜1030-05012017.log

私が欲しいもの:
圧縮ファイル - Source_1030-05012017.7z
ログイン                             ファイル - Source_1030-05012017.log

+0

各ソースファイルのログファイルをします 'HELP FOR'はパラメータ展開に関しては、特にとして、いくつかの有用な情報を提供します。あなたの注意は '%〜'展開、特に '%〜n'に向けられています。 –

答えて

0
echo Start Compression 

for %%a in ("C:\File_To_Compress\*.xls") do set "name=%%~na" 

7za a -t7z "c:\Archive_Directory\%name%_%time:~0,2%%time:~3,2%-%date:~-10,2%%date:~7,2%%date:~-4,4%.7z" "C:\File_To_Compress\*.xls" >"C:\Users\Compression_Logs\%name%_%time:~0,2%%time:~3,2%-%date:~-10,2%%date:~7,2%%date:~-4,4%.log" 

echo Finish Compression  

timeout /t 30 

%%aにそれぞれの名前を設定しますファイルを順番にマスクに一致させてから順番にそれぞれname%%~naを意味するname part only

を使用してください。必要なファイル名の文字列として使用してください。

注:論理的な方法でアルファベット順の並べ替えを可能にするYYYYMMDDHHMMSSとしてタイムスタンプを表示する方が便利です。

echo Start Compression 

for %%a in ("C:\File_To_Compress\*.xls") do (

7za a -t7z "c:\Archive_Directory\%%~na_%time:~0,2%%time:~3,2%-%date:~-10,2%%date:~7,2%%date:~-4,4%.7z" "%%a" >"C:\Users\Compression_Logs\%%~na_%time:~0,2%%time:~3,2%-%date:~-10,2%%date:~7,2%%date:~-4,4%.log" 
) 

echo Finish Compression  

timeout /t 30 

このバージョンでは、個別にアーカイブを作成し、

+0

書かれているとおり、これは動作しません。それは拡張の最後のファイルの名前だけを与えます。 FORコマンドで '('と ')を使って複数のコマンドをグループ化するには、[ss64のFORコマンド(https://ss64.com/nt/for.html)を参照してください。 –

+0

@JeffZeitlin - 私はそれが何らかの理由で故意の選択だったと思っています。 – SomethingDark

+1

@SomethingDark:OPはすべてのターゲットファイルを1つのファイルに圧縮したかったので、割り当てる名前は何ですか?それぞれが個別に圧縮される場合、なぜですか? - xlsファイルは比較的小さいので、多くの点は表示されません。 – Magoo

関連する問題