2016-03-26 12 views
-1

このプログラムを実行しようとすると、変数が正しく設定されません。とにかく、ファイルの場所をファイルに設定するのではなく、ファイル自体を変数に設定し、それを画面に表示させるようにしていますか?関数の結果を変数に設定しようとしています

@echo off 
for %%a in (d) do if exist "%%a:\" dir /b /s /a-d "%%a:\gm_construct.bsp" set p=%%~dpnxa 
pause 
+2

:(:'単一引用符の種類に注意してください)あなたのコードに

for /f "delims=" %%i in ('dir /b /s /a-d "%%a:\gm_construct.bsp"') do set p=%%~dpnxi 

を統合:

は、コマンドの出力を取得するには、別のfor必要どの変数が正しく設定されていないのですか?それは現在設定されているもので、何を設定したいのですか? – Ruslan

+0

上記のコードの変数p。私は私のコードの他の場所でそれを使用しようとすると動作しません。私はそれがファイルではなくファイルの場所に設定したいが、それを正確に行う方法がわからず、何が設定されているのか分からない。 –

+2

これを 'dir'コマンドの出力に設定したいのですか?コードの他のすべての部分が動作することをテストしましたか(つまり、実際にファイルを見つけたら 'dir'コマンドを実行します)? – Ruslan

答えて

3

あなたのコードは何:

dir /b /s /a-d "%%a:\gm_construct.bsp" set p=%%~dpnxa 

リストのすべてのファイル"%%a:\gm_construct.bsp"setという名前のすべてのファイルと名前のすべてのファイルp=%%~dpnxa

何(と思う)あなたがやりたい:

dir /b /s /a-d "%%a:\gm_construct.bsp" 

とし、出力を変数に設定します

@echo off 
for %%a in (d) do (
    if exist "%%a:\" (
    for /f "delims=" %%i in ('dir /b /s /a-d "%%a:\gm_construct.bsp"') do set p=%%~dpnxi 
) 
) 
pause 

一時停止

+0

パスの後にファイル名を与える以外は、私はそれが任意のヘルプにあるフォルダに設定したいだけです。 –

+0

'%〜dpnxi'は' %% i'の** d ** rive、** p ** ath、** n ** ame、e ** x ** tensionを意味します。だからあなたはおそらく '%%〜dpi'を望んでいます – Stephan

+0

私はそれを考えるべきです。私はそれを理解しようと2時間を費やしました。 –

関連する問題