3

私は自分のzipフォルダのそれぞれにzipする必要がある多くのExcelファイルを持っています。私はこれを解決したと思っていましたが、Excelファイルが破損しているため開くことができないと同僚から言われました。戻って元のファイルを確認したところ、問題なく開きました。しかし、zip形式のファイルを開くと、破損したエラーが発生します。私はOffice2010を使用していて、修復できますが、同僚は全員Office 2007であり、ファイルを修復できないようです。私のバッチコードは次のとおりです。

for /r %%X in (*.xlsm) do "C:\Program Files\7-Zip\7z.exe" a -tzip "%%~nX" "%%X"
4

3 に答える 3

1

7zip実行可能ファイルの最初のパラメーターとして間違った値を使用している可能性があると思います。のドキュメントによるとFOR

%〜nI-%Iをファイル名のみに展開します

そして、7zipのドキュメントによると:

「a」コマンドは、1文字のaで使用できます。このコマンドは、「アーカイブ」または「追加」の略です。これを使用して、ファイルをアーカイブに入れます。宛先アーカイブとソースファイルを(この順序で)指定する必要があります。

したがって、サンプルファイルでスクリプトを使用すると、コマンドラインは次のようになります。

"C:\Program Files\7-Zip\7z.exe" a -tzip "somefile.xlsm" "C:\path\to\somefile.xlsm"

最初のパラメータ.zipの最後にファイル拡張子を付ける必要はありませんか?したがって、行は次のように変更されます。

for /r %%X in (*.xlsm) do "C:\Program Files\7-Zip\7z.exe" a -tzip "%%~nX.zip" "%%X"

迷惑なことですが、ファイル拡張子は実際にはWindowsで何かを意味します。前の行は、拡張子が付いたzipファイルを作成していました.xlsm。人々がそれらのファイルを開こうとすると、Excelは文句を言います(それはzipファイルであり、.xlsmではないため)。

于 2012-11-29T15:04:56.610 に答える
1
@Echo OFF
PUSHD "C:\Program Files\7-Zip" && (
    FOR /R "%CD%" %%# in (*.xlms) DO (7z a -tzip "%%~n#.zip" "%%#")
    POPD
)
REM Don't worry about the PUSHD command, the %CD% variable isn't expanded, that's the trick.
Pause&Exit

また、すべてを1つのファイルにまとめたい場合は、動的演算子*(アスタリスク)と7zip-recursiveパラメーターを使用できます。

7z a -r -tzip "ALL.zip" "*.xlsm"
于 2012-11-29T15:43:48.937 に答える
0

すみません。

それは誤った警報でした。すべてのファイルではなく、一部のファイルのみであることが判明しました。ファイルは地域ごとに区分されており、破損したのは最初の地域だけでした。なんで?他のすべてのファイルは完成したバッチでzip圧縮されており、エラーが発生していなかったため、バッチファイルを作成しようとした最初の試みによって破損したと推測できます。だから私のスクリプトには何も問題はありませんでした。でも助けてくれてありがとう。

于 2012-11-30T14:21:26.647 に答える