2016-06-30 2 views
1

を形成するために、変数、文字列を連結します。バッチ:私は、ユーザーがファイルへのパスを入力し、私はそのパスフォームファイル名を抽出し、バッチファイルを有する出力パス

私は、同じ名前のフォルダを作成するために、そのファイル名を使用します。そのフォルダ内の

は、私は私のバッチファイルで呼び出していますプロセスがにそのログメッセージを書き込むことができlog.txtファイルを作成したいです。

ここでは、コードです:

set /p pathFoFile="Enter path fo file: " 
FOR %%i IN ("%pathFoFile%") DO (
    set outputFolder=%%~ni 
) 

someprocess -p1 blabla -p2 blabla -p3 %outputFolder% > %outputFolder%\log.txt 

最後の部分、%outputFolder%\log.txt、私はこれをエコーするとき、私はちょうど、しかし> log.txt

を入れたときにそれが動作するので、問題のようです:

echo %outputFolder%\log.txt 
は、

正しいパスが表示されます。

にはどうすればフォルダ名を使用して、このlog.txtファイルを作成することができますか?

EDIT

私はこのように見えることがあり得るパス:

..\some\folder\thefile.egf 

か、単に

thefile.egf 

または絶対パス。

私は

thefile 

を抽出して呼び出すしたいと思います:

someprocess -p1 blabla -p2 blabla -p3 thefile > thefile\log.txt 

log.txtを含むフォルダthefileは、バッチファイルからの相対作成する必要があります。パスにドライブ文字がありません。 %outputFolder%\log.txtまたは"%outputFolder%\log.txt"を使用しているとき私が得る

エラーは、システムがパスを見つけることができないということです。

+0

私は 'dir'の代わりに、' someprocess'でこの正確なスクリプトを試してみましたが、それがうまく働きました。入力したパスにはドライブ文字と後続のスラッシュは含まれていませんか? – leetibbett

+0

私は自分の質問を編集しました。 – user3813234

+0

私はそれを持っていると思う:フォルダは、プロセスによって作成されます。また、フォルダを作成するのに少し時間がかかります。 > folder/log.txtを実行すると、そのフォルダはまだ作成されていません。おそらくそれです。 – user3813234

答えて

1

パスに空白がある場合は、引用符を使用してください。

someprocess -p1 blabla -p2 blabla -p3 "%outputFolder%" > "%outputFolder%\log.txt" 
+0

これはうまくいきませんでした。私はまだ同じエラーが発生します。ファイル名にスペースがないため、パスに空白を入れることはできません。私はファイル名をfoldernameとして使用しています。 – user3813234

+0

引用符はとにかく良い練習です... – aschipfl

+1

ほとんどの場合、フォルダは存在しません。 「SomeProcessは何をしますか?フォルダを作成するはずですか? MD "%OutFolder%"を実行しない場合 – RGuggisberg

0

%%~dpniは、ドライブ、パス、およびファイル名を含むように変数を展開します。

関連する問題