みなさん、こんにちは。助けてくれてありがとう!
私は現在、単一のファイルの名前を小文字に変更するこのプログラムを持っています:
このファイルはLowercase.batです
set LC1=%~nx1
set LC1=%LC1:"=%
set LC1=%LC1:A=a%
set LC1=%LC1:B=b%
set LC1=%LC1:C=c%
set LC1=%LC1:D=d%
set LC1=%LC1:E=e%
set LC1=%LC1:F=f%
set LC1=%LC1:G=g%
set LC1=%LC1:H=h%
set LC1=%LC1:I=i%
set LC1=%LC1:J=j%
set LC1=%LC1:K=k%
set LC1=%LC1:L=l%
set LC1=%LC1:M=m%
set LC1=%LC1:N=n%
set LC1=%LC1:O=o%
set LC1=%LC1:P=p%
set LC1=%LC1:Q=q%
set LC1=%LC1:R=r%
set LC1=%LC1:S=s%
set LC1=%LC1:T=t%
set LC1=%LC1:U=u%
set LC1=%LC1:V=v%
set LC1=%LC1:W=w%
set LC1=%LC1:X=x%
set LC1=%LC1:Y=y%
set LC1=%LC1:Z=z%
ren "%1" "%LC1%"
そして、私はこのファイルを持っており、すべてのサブフォルダー内のすべてのファイルとフォルダーの名前を(おそらく)変更します。上記のバッチを複数回呼び出すことによってそれを行います
これはLowerCaseRecursive.batと呼ばれます
pushd %1
dir *.* /b /a-d /s > lwrcase.log
for /f %%i in ('type lwrcase.log') do call LowerCase "%%i"
del /q lwrcase.log
popd
コマンドラインを使用してプログラムを呼び出し、LowerCaseRecursive.bat "C:\Test\"と言います。すべてが正常に機能しますが、を含むファイルの名前は変更されません。したがって、すべてが正常に機能しますが、lwrcase.logにフルネームが含まれていても、スペースが含まれるファイルの名前を変更できないようです。forは、最初のスペースまで解析します。
私はWindowsのバッチプログラミングについてほとんど知識がありません、何かアイデアはありますか?
みなさん、ありがとうございました!これについて質問がある場合は、私に聞いてください。
編集:問題は、lowercase.batへの個々の呼び出しで発生する可能性が最も高いです。デバッグスペースを切り取った後、lowercase.batの呼び出しにはすでにファイル名全体が含まれていることがわかります。つまり、ファイルがC:\ Hello \ My File.txtの場合、次のように呼び出されます。
call Lowercase "C:\Hello\My"