0

たとえば、「This IsGood 1.1.png」から「tig11.png」にファイル名をバッチでトリミングしたい

条件は、スクリプトがファイル名からすべての大文字を取得し、それらを小文字に変換してから、スペースを含まないトリミングされたファイル名を形成することです...

このタスクを達成するのを手伝ってください..ありがとう!

4

1 に答える 1

1

ファイル名の単純な反復から始めることができます

set str=This IsGood 1.1
:again
set chr=%str:~0,1%
set str=%str:~1%
if not  "%chr%"=="" echo %chr% 
if not "%str%"=="" goto :again

読んHELP SETで、HELP IFそしてHELP GOTO

echoここで、理解できれば、コマンドを呼び出しに変更して続行します...

 if not  "%chr%"=="" call :checkchar %chr% 
 ...
 :checkchar 
 echo %1
 goto :eof

読むHELP CALL

次に、文字が大文字かどうかを確認するための実際のコードを実装します

:checkchar 
for %%c in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9) do if .%1==.%%c echo %%1
goto :eof

読むHELP FOR

この新しいechoコマンドを関数の新しい呼び出しに変更して、変数を小文字に設定します

ここで、結果を、たとえば、fn空白に初期化する必要がある変数に連結します。

そして、すべてを適切なファイル名処理でラップし、ファイル名だけを抽出し(処理パラメーターの構文の〜nオプションを参照)、新しい名前でフルパスを構成し直します(〜d〜p〜xオプションを使用)

@echo off
set fn=
call :upcaseonly %~n1
echo %~dp1%fn%%~x1
goto :eof

:upcaseonly
set str=%*
:again
set chr=%str:~0,1%
set str=%str:~1%
if not  "%chr%"=="" call :checkchar %chr% 
if not "%str%"=="" goto :again
goto :eof

:checkchar
for %%c in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9) do if .%1==.%%c set fn=%fn%%1
goto :eof 

これを出発点として使用してください。ファイルの名前を変更し、ファイルがすでに存在する場合、またはファイルの名前を変更できない場合に処理するための独自のロジックを追加する必要があります...

于 2012-04-14T17:24:04.387 に答える