2017-08-04 6 views
1

ループを使用する際に問題があります。私がしたいのは、ファイル名の末尾に「file1」、「file2」、「」などのファイル名の末尾に「N」を付けてファイル名を変更することです。文字列の最後にループ番号を追加してFORループの文字列を変更するにはどうすればよいですか?

set path=D:\MeasurementData\%~n0% 
echo %path% 
pause 

for /L %%N in (1,1,5) do (

    set file="%path%%%N" 
    echo %file% 
    pause 
    start C:\TomoK.exe %file% "D:\MParameter.mff" "D:\MParameter.mcf" 
    Pause 

) 

これを解決する方法を知っている人はいますか?

+2

遅延拡張。 – Compo

+4

[遅延の拡張](https://stackoverflow.com/a/30284028/2152082)、変数に「パス」という名前を付けないでください。 – Stephan

+0

[/F](https://stackoverflow.com/questions/13805187/how-to-set-a-variable-inside-a-loop-for-f)のループ内で変数を設定する方法 – melpomene

答えて

0

最初の提案は、あらかじめ定義された環境変数を置き換えることは決してありません。それには、非常に良い理由がある以外はPATHです。コマンドプロンプトウィンドウを開き、setを実行して、すべての定義済みの変数を現在の値で出力します。や環境変数に関するWikipediaの記事の章Windows Environment Variablesを見て、set /?のようなパラメータとして/?でバッチファイルで使用される各コマンドをコマンドプロンプトウィンドウを開き、実行することをお勧めします助けを必要とする上What is the reason for 'sort' is not recognized as an internal or external command, operable program or batch file?

私の第二の提案に答えをお読みください。コマンドのヘルプは、1つまたは複数のページで出力され、調査することができます。 遅れ拡張を使用するには、 IF 例えばにコマンドSETの助けによって説明されて使用されなければならないとき、どのように。バッチファイルを書く上で役に立つ他のページは、Microsoft's command-line referenceSS64.com - A-Z index of the Windows CMD command lineです。

私の3番目の提案は、How to set environment variables with spaces?の回答を読んでおり、他のスタックオーバーフローに関する質問がそこにリンクされています。そして、後半のthis answerには、コマンドに関する詳細とSETLOCALENDLOCALがあります。コマンドSTARTが実行可能TomoK.exeを実行するために使用されるため、削除された理由私にはわからない

@echo off 
setlocal EnableExtensions EnableDelayedExpansion 
set "DataPath=D:\MeasurementData\%~n0" 
for /L %%N in (1,1,5) do (
    set "DateFile=%DataPath%%%N" 
    echo !DateFile! 
    pause 
    C:\TomoK.exe "!DateFile!" "D:\MParameter.mff" "D:\MParameter.mcf" 
    pause 
) 
endlocal 

:これらすべてのヘルプやウェブページを学んだ後、それは、このコードを理解するためにはもう問題はないはず

それ。

しかし、環境変数DataFileは実際にはループの本体にはまったく必要ないので、バッチファイルは遅延拡張せずに書き込むこともできます。 、使用するコマンドを理解し、それらがどのように動作するために

@for /L %%N in (1,1,5) do @C:\TomoK.exe "D:\MeasurementData\%~n0%%N" "D:\MParameter.mff" "D:\MParameter.mcf" 

コマンドプロンプトウィンドウを開き、そこに次のコマンドを実行し、完全に読み:そして、上記のバッチ全体のコードは、バッチ・ファイル内の単一のコマンドラインに最適化することができ、すべてのコマンドが非常に注意深く表示されます。

  • echo /?
  • endlocal /?
  • for /?
  • pause /?
  • set /?
  • setlocal /?
  • start /?
関連する問題