2016-07-08 18 views
-1

してくださいしてくださいしてくださいバッチファイルは、テキストファイルの内容から変数を設定し

誰もが、私は手動で行ごとに入力してくださいが、私はバッチを通してそれを実行しようとする場合、それが動作しない場合は、次のコードが動作する理由を説明することができますファイル?

@ECHO OFF 
SETLOCAL EnableDelayedExpansion 
SETLOCAL EnableExtensions 

Set Source=%computername% 
Set Backups=%Source%\c$\users\travel\desktop 
Set Target=dan-2813-pc 
Set Action=Restore 

    IF EXIST "\\%Backups%\%Source%-OrgUnit.txt" (

     SET /p OrgUnit=<\\%Backups%\%Source%-OrgUnit.txt 

     SET /p MoveOU=At the end of the %Action%, do you want to move %Target% to %OrgUnit% [Y/N]? 

     ) 

ENDLOCAL 

ここで私が紛失しているものは完全に失われています。

+3

どの部分が機能していませんか?あなたは実際にあなたの問題を実際には記述していません。 「うまくいきません」とは無意味なフレーズです。 – SomethingDark

+0

DOH!申し訳ありません。 スクリプトがバッチファイルから実行されているときに、%OrgUnit%変数が設定されていません。手動で入力すると、それが表示されます。 復元の最後に、dan-2813-pcを「CN = DAN-2810-PC、CN = Computers、DC = mydomain」に移動しますか? DC = com " 代わりに、復元の最後に、dan-2813-pcを –

+0

に移動したいですか?[遅延の拡張](http://stackoverflow.com/a/30284028/2152082) – Stephan

答えて

0

ENABLEDELAYEDEXPANSIONのヘルプは言う:

ENABLEDELAYEDEXPANSION/DISABLEDELAYEDEXPANSION 
    enable or disable delayed environment variable 
    expansion. These arguments takes precedence over the CMD 
    /V:ON or /V:OFF switches. See CMD /? for details. 

そして/V:のヘルプは言う:

つまり
/V:ON Enable delayed environment variable expansion using ! as the 
     delimiter. For example, /V:ON would allow !var! to expand the 
     variable var at execution time. The var syntax expands variables 
     at input time, which is quite a different thing when inside of a FOR 
     loop. 

、あなたがそれを設定した後、環境変数の変更された値を表示する場合ブロック内で%の代わりに!を使用するようにコードを変更する必要があります。

SET /p MoveOU=At the end of the %Action%, do you want to move %Target% to !OrgUnit! [Y/N]? 
+0

どうもありがとうございます!私は誤って%と!可変的な拡張のための区切り文字ではなく、互換性がありました。 –

関連する問題