2016-12-26 12 views
0

ファイルcomputer.csvから2番目の列のユーザーIDとコンピュータ名を取って、リモートコンピュータ管理コンソールを開くためのバッチファイルを作成しています。最初の試行でうまく動作します。元のラベルに戻ります。他の入力を求める。それはエラーを与える。システムは、私のコードはバッチファイルシステムがループの後にファイルを見つけることができません

:start 
    set /p Input="Enter User-ID:" 

    for /f "usebackq tokens=1-4 delims=," %%a in (".\data.csv") do (
     if %input% ==%%a ("cmd /c Start /B /wait compmgmt.msc –a /computer=%%b") 

    ) 
    cls 
    GOTO start 
+0

なぜ 'cmd/C'と' start'を使用していますか?あなたはなぜコマンドライン全体を引用していますか? – aschipfl

答えて

0

グッドプラクティスは、バッチファイル内のパスのため%〜DP0を使用することです./data.csv ファイルを見つけることができません(代わりのような相対パスのを。)そのように現在の作業フォルダは、ファイルを変更した場合常に配置されます。だから、〜dp0data.csv

+0

ドットは意図によって%CD%を参照することもできます。しかし、どちらの方法もコードに示されている通りに変更する必要はありません。固定(非相対)パスを選択する方が良い方法です。 – LotPings

+1

Waooooooooooパーフェクトありがとうジョー。素晴らしい。 –

+0

もう1つ問題があります。私はそれをexeファイルにしなければならない。だから私はそれをexeに変更すると動作しません。 .batを開くと完璧に動作します。 –

0
:start 
set /p Input="Enter User-ID:" 
PUSHD  
for /f "usebackq tokens=1-4 delims=," %%a in (".\data.csv") do (
if %input% ==%%a ("cmd /c Start /B /wait compmgmt.msc –a /computer=%%b") 

) 
POPD 
cls 
GOTO start 

%に変更

は、次のサイクルの前にそれを復元し、その後、ディレクトリを押して、正気を復元する必要があります。

関連する問題