@Echo off&SetLocal EnableExtensions EnableDelayedExpansion
cd "C:\Documents and Settings\John\Desktop\New\Interest\f2"
Pushd "C:\Documents and Settings\John\Desktop\New\Interest\f2"
Set Line#=26
Set /A LOfs=24 -1, Len=34 - LOfs
For %%A in (*.txt) do For /F "tokens=1* delims=:" %%B in (
'Findstr /N ".*" "%%A" ^|Findstr "^%Line#%:"'
) do if %errorlevel% == 0 Set "Line=%%C"&Ren "%%~fA" "!Line:~%LOfs%,%Len%! - %%A!""
Popd
上記のテキストのある場所にあるファイルのファイル名を特定の位置に変更しようとしています。ディレクトリ内のテキストファイルのディレクトリ名のテキストファイル名を変更するバッチファイル
26行目が空白の場合は何もせず、ファイル名を変更しないでください。
私はどこかで間違っていて、サークルで回っています。
誰でも手助けできますか?
ありがとうございます。
「do」条件の最後に2つの引用符があるのはなぜですか?これは、renコマンドを 'line'変数値に設定します。 – npocmaka
'ErrorLevel'は'%ErrorLevel%== 0'を受け取ると思いますか? 'findstr'のもの? 'findstr'は新しい' cmd'インスタンスで 'for/F'によって実行されるので、これはうまく動作しません。さらに、 '!ErrorLevel!'には[遅延拡張](http://ss64.com/nt/delayedexpansion.html)が必要です。代わりに 'ErrorLevel 1でなければ'を使うこともできます。とにかく、#26行目をフィルタリングしているので、おそらく 'if' /' ErrorLevel'クエリは必要ありません。それにもかかわらず、例を挙げて、実際に何が起こったのかを記述する必要があります。 – aschipfl
私はそれを考えました**%ErrorLevel%== 0 ** ** Findstr/N "。*" "%% A"^| Findstr "^%Line#%:**は空白行ではない場合に発生します。 – jaburmester