2011-12-14 6 views
1

問題の概要: 保存ファイルが特定のファイルサイズを超えると、デッドアイランドのゲームがクラッシュする。ファイルはアーカイブですが、.zipではなく.sav拡張子が付いています。 * .savファイルをループし、同じファイル名で別の場所にコピーしますが、* .zipとしてコピーして抽出し、抽出されたファイルサイズをチェックし、ファイルサイズが制限を超えた場合に警告します。batファイル:ファイルをループして結果を操作する

はこれまでのところ、私はこれを得た:何らかの理由でバットファイルのための

@ECHO OFF 
setlocal enableextensions enabledelayedexpansion 
FOR %%i IN ("D:\Games\Dead Island\out\save\"*.sav) DO (
set str= 
set str=!str!%%i 
set str=!str:.sav=.zip! 
echo !str! 
copy %%i !str! 
) 
PAUSE 

は、FORループ内の変数に値を割り当てる問題を抱えているので、私はdelayedexpansionを使用するための解決策を見つけました。

現在のところ私の最大の問題は、save_1.savをsave_1.zipという名前の別の場所にコピーするだけです。私はこれを乗り越えるたら、多分私はちょうどのpythonでこれを行う必要があり、私は(必要なすべての他のものと一緒に)7zipを開梱し、ファイルサイズの確認に飛び込むだろうが、これはただイライラさせられる:)

...

あなたが何かのファイルの拡張子を変更したい場合は

答えて

0

、あなたはそう(私のバッチファイルのいずれかから撮影したもの)のように、ステムを取得するために%%~n<variable>を使用することができます。

FOR %%f IN (*.ebr) DO (
    hcsg -c %%f %%~nf.cg1 
    hbsp -c %%~nf.cg1 nohints %%~nf.ct1 
    hportal -c %%~nf.ct1 %%~nf.cp 
    hflood -c %%~nf.ct1 %%~nf.cp %%~nf.cg2 
    hbsp -c %%~nf.cg2 nohints %%~nf.ct2 
) 

これは便利かもしれません:

0123あなたのケースでは

、私はあなただけのような何かことができると思います:

FOR %%f IN (*.sav) DO (
    copy %%f %%~nf.zip 
) 

(ただ、コマンドラインでこれをテスト - あなたはそれを試してみたい場合は、代わりに%%%を使用します - - そしてそれは動作します。)

+1

私はquotemarks.thankで両方のパスを囲んだ後、魅力的に働いた。 – ch1zra

0

これは誰も考えていないようですが、ここでは%%変数の代わりに%loop変数の中に%variable%を使用して、それを操作する方法を説明します。 Dのこの内部を入れ

:\ superrename.bat:

@echo off 
set CURRFILE=%1 
set CURRFILE=%CURRFILE:~6% 
set CURRFILE=FREN%CURRFILE% 
if "%1" == "" (
for %%F in (*) do call d:\superrename.bat %%F 
) else (
echo we found %1 which will become %CURRFILE% 
) 

これが行うことは、あなたが(遅延拡張なし)FORコマンド内で、通常の変数の操作を使用することができます。私は名前を変更してファイル名の最初の数文字(この場合は6文字)を削除するつもりです。エコーの前にあれば、エコーの出力はFORの1回の実行で遅れます。

制限「我々はFRENr.iniになるであろうxntimer.iniを見つけました」: %% Fにスペースが含まれている場合は、複数のパラメータは、バッチファイル(%2、%3に渡されることに注意してくださいとそう利用される)。引用符を使用しようとすると、CALLはすぐには機能しません。[2番目の単語]は現時点では期待しません。

これを回避する方法は、上記の両方の場所で%1の代わりに%1を指定することです。

第2制限:FORコマンド。名前が変更されたファイルの一部が表示され、再度それらを実行します。コピーを別のディレクトリなどに使用するのが最善です。 (問題はhttps://superuser.com/questions/475874のバグに関連する可能性があります...私の場合、100以上のファイルを修正するために約8つのランダムな項目がありました。)

ハッピーコーディング!

+0

は、 'call d:\ superrename.bat %% F'を' start/low "cmd/c" call superrename.bat "%% F" "" 'に置き換えれば、並列(複数プロセス)ループ:) –

関連する問題