スクリプトの作業に迷惑をかけずにかなり長い間検索しました。私はかなり近くにいるように感じますが、少し助けが必要です。再帰的に "srcdir"(スクリプトの冒頭で設定)を再帰的にスキャンするFORループを使用しようとしていますが、ループがファイル/パス(%% f)を返すと、ファイルパスの一部を別のもの(例:C:\ rootpath \ desのC:\ rootpath \ src)。forループと変数置換を使用してファイルパスを一括して分割する
は、私はこの1つのようなスクリプトを使って、ちょうどこのような何かを行うことができる午前:これは困難に何が
set subdir=C:\rootpath\src
set subdir=%subdir:src=des%
echo %subdir%
、私の「SRCDIR」のルートパスが変更される可能性がある(例えば、C :\ roothpath)と "srcdir"が変更された後にすべての再帰的に(例えば、C:\ rootpath \ srcのフォルダ "src"の後のもの)。フォルダsrcとフォルダdes(私がバッチファイルを実行しているのと同じディレクトリにあります)の唯一の定数パスです。
したがって、前の例と同じ手法を使用して、 "srcdir"(%% f)のファイルのフルパスを再帰的に検索し、 "src"フォルダをパス文字列のフォルダ "des"。したがって、変数(subdir)として "%% f"を設定し、変数置換を使用してフォルダを置き換えようとしています。ここで
が私の現在の非稼働スクリプトです:
set srcdir=C:\rootpath\src
for /r "%srcdir%" %%f in (*.txt) do (
set subdir=%%f
set subdir=%subdir:src=des%
echo %subdir%
)
任意の助けいただければ幸いです!ありがとう!
'for'ループのようなコードブロック内の変数を設定して読み込むとすぐに[delayed expansion](http://ss64.com/nt/delayedexpansion.html)が必要になります... – aschipfl
だから私forループが開始する前に 'Setlocal EnableDelayedExpansion'を使用する必要がありますか? –
はい、これにより有効になります。それを実際に使用するには、 '%variable% 'ではなく'!variable! 'のような変数を展開する必要があります。これはサブ文字列の置換構文にも当てはまります... – aschipfl