1

私はいくつかのバッチプログラミングを行っており、感嘆符を使用しています!! カウンター変数の場合

そのため、使用するたびに!count!、その変数の直後に厄介なスペースが追加されます。ファイルのリネームに使いたいのでとても面倒です

.jpg の直前にスペースを挿入する完全なコードを次に示します。

FOR %%F IN (".") DO ( MOVE "%%F" "%MyDir%-file-0!count!.jpg" SET /a count=!count!+1 )

スペースを避ける方法はありますか?

4

2 に答える 2

2

BATは確かに非常に風変わりです。おそらくそれは「+1」と「)」の間のスペースですか?スクリプトにDelayedExpansionが含まれていますか?これは通常必要です。

サブルーチンを使用することをお勧めします。非常に便利な引数編集機能があります。「call/?」を見てください。

特に、call:MySub "File name.txt"と言うと、 "MySub"では、%1は"Filename.txt"になります-引用符を含みます。ただし、%〜1は引用符を削除します。これにより、スペースを含むファイル名を非常にうまく処理できます。したがって、「私のパスにはスペースがあります\%〜1」は「私のパスにはスペースがあります\ファイル名.txt」になります-文字列全体を一組の引用符で囲みます。ファイル名と拡張子を分割することもできます。

@echo off

setlocal ENABLEDELAYEDEXPANSION
set count=0
set MyDir=MyDir
FOR %%F IN ("*.*") DO call :MoveThatFile  %%F
goto :EOF

:MoveThatFile
    echo MOVE "%~1" "%MyDir%-file-0!count!.jpg"
    SET /a count=!count!+1
    goto :EOF
于 2012-11-25T00:22:39.833 に答える
0

それが本当に完全なコードである場合、すべてが悪いです。コマンドを連結しておらず、変数 !COUNT! を使用しようとしています。変数値を設定する前。

別に、変数を囲まないのは悪い習慣です。

@Echo OFF

Setlocal enabledelayedexpansion

FOR %%F IN (*) DO (
    SET /A "Count+=1"
    MOVE "%%F" "%MyDir%-file-0!COUNT!.jpg" 
) 

Pause&Exit
于 2012-11-25T11:14:41.030 に答える