1

実際に必要なことを実行するバッチスクリプトがあります(多数のファイルを取り込んで、.bz2ファイルと同じディレクトリに配置します)。ただし、元のファイルを削除する必要があるため、少し助けが必要です。さらに、入力サイズが大きくなりすぎると (正確な数値が得られず、おそらく 40 前後)、バッチがクラッシュします。私はこれを自分で解決しようとしましたが、残念ながら、バッチは意味不明です。これで元のファイルを削除できれば、現在の入力サイズに対処できます。誰でも私に与えることができるどんな助けでも大歓迎です。これが私の現在のコードです:

@Echo Off
:Start
If [%1==[ Goto :EOF
PushD %~pd1
"C:\Program Files\7-Zip\7z.exe" u -tbzip2 %~nx1.bz2 %1
Shift
PopD
Goto Start

また、私はこのコードの最初の作成者ではなく、フォーラムに投稿されたことにも言及したいと思います。

4

2 に答える 2

1

代わりにFORループを作成します。

::start batchfile
@echo off
setlocal
::set local variables

set input=C:\input
set 7zip=C:\Program Files\7-Zip

::The reason I would use this forloop is that when you start your loop,
::you can say for each files in a recursive way do the following: 
::IF (test) do (<command1> <command2>)
::The file that is being processed is called %%i during the whole loop (for that file)
::so at the end of your loop you just 'del <file>' your source

for /f %%i in (%input%\*.bz2) do (
%7zip% u -tbzip2 "%input%\%%i" "%%i"
del "%input%\%%i"
)

goto: eof

私は本当に専門家ではありませんが、これがあなたの途中で役立つことを願っています

于 2011-01-19T19:46:25.400 に答える
0

解凍ユーティリティが呼び出される行を次のように変更します。

"C:\ Program Files \ 7-Zip \ 7z.exe" u -tbzip2%〜nx1.bz2%1 && del %~ nx1.bz2

&&太字の部分は、「左側のコマンドが正常に完了した場合に指定されたファイルを削除する」ことを意味します。したがって、何らかの理由でファイルが解凍されなかった場合、または不完全に解凍された場合、ファイルはdel起動せず、ファイルは保持されます。つまり、そのようにしたい場合です。

また、Rpsのソリューションが適切な場合は、それに応じて変更することをお勧めします。

しかし、使用する前に、del最初に(おそらく、7z.exe /?またはを実行して7z.exe -?)unzipperユーティリティに、解凍に成功した場合にアーカイブを自動的に削除するように指示するパラメータがあるかどうかを調べます。そうすれば、機能を手動で実装する必要がなくなります。

于 2011-02-08T07:12:15.780 に答える