2016-10-25 5 views
0

リモートディレクトリ(psexec)を検索し、その結果を変数に格納する必要があります。コマンドをバッチファイルの変数に保存する

私は実行する必要があるいくつかのファイルを含む他の多くのフォルダでいっぱいのディレクトリを持っています。ネットワーク上の各コンピュータには、必要なファイルが別のディレクトリにあります。

は例えば、私は

dir *Google_Chrome_49_0_2623_112_X64_EN_R01* /s 

で(PSEXECを使用して)検索しますそして、私は今、結果

Volume in drive C is OSDISK 
Volume Serial Number is C8AD-F658 

Directory of C:\Windows\ccmcache\2a 

12/04/2016 01:52 PM    458 Google_Chrome_49_0_2623_112_X64_EN_R01.cab 
14/04/2016 05:26 PM   69,632 Google_Chrome_49_0_2623_112_X64_EN_R01.mst 
       2 File(s)   70,090 bytes 

    Total Files Listed: 
       2 File(s)   70,090 bytes 
       0 Dir(s) 4,726,218,752 bytes free 

になるだろう、私はディレクトリ2a内にCDに同じバッチファイルを必要と実行します内部のスクリプト。

変数に '2a'を格納する方法はありますか?そのために私はそれにCDを入れることができますか?

は現在、私は、バッチが私に、検索結果が表示されます2つの段階、でこれをやって、そのディレクトリのプロンプトを表示:

psexec \\%PCNAME% cmd /c (cd ..\ccmcache ^& dir *Google_Chrome_49_0_2623_112_X64_EN_R01* /s) 

SET DIRECTORY=%1 
SET /P DIRECTORY=Enter Directory: 

問題がある、私は、これは完全に自動化する必要があります。これどうやってするの?

注:私は他のいくつかのスレッドを見てきましたが、答えのどれも私を助けてくれないようです。 psexecの結果は、ローカルインタフェースには戻っていないようです。
私が試してみた:VARの結果全体のラインを設定しようとする

for /f %%a in (psexec \\%PCNAME% cmd /c (cd ..\ccmcache ^& dir *Google_Chrome_49_0_2623_112* /s ^| FIND "Directory of C:\Windows\ccmcache\") DO (
SET v=%%a 
) 

を、私はVARをチェックするとき、それは空です。

+2

[batスクリプトの変数にコマンドの結果を格納する方法](http://stackoverflow.com/questions/14019274/how-to-store-result-of-a-command-in- a-variable-in-bat-script) –

+0

複数のスレッド(リンクされているスレッドを含む)をチェックしても問題がありません。詳細を編集した質問。 –

答えて

0

私は、pushdでネットワーク共有にマップし、必要なまでpsexecを扱う代わりに検索を実行できることを発見しました。

だから私のコードでは、今のようになります。

%X%が、今私が探していたディレクトリである
pushd \\%PCNAME%\C$\Windows\ccmcache 

for /f "tokens=3" %%a in ('dir *Google_Chrome_49_0_2623_112* /s ^| FIND "Directory"') DO (
set v=%%a 
for /f "tokens=4 delims=\" %%m in ('echo !v!') do (set x=%%m) 
) 
popd 

+0

なぜ 'dir/S/B'を主に使っていないのですが、delimを使わずにforと一緒に' %%〜dpa'と '%%〜nxa'をname.extに構文解析するのはなぜですか? – LotPings

関連する問題