3

ネットワークの場所からローカルの場所に exe ファイルをコピーするバッチ ファイルを書き込もうとしています。現在は動作しますが、Windows のバージョン (xp または win7) によっては、コピーに必要なローカル パスが異なるため、ユーザーは正しい .bat ファイルを選択する必要があります。(ユーザーがマシンを起動するたびに実行されるように、スタートアップフォルダーに移動します)。バッチ ファイルの作成に取り組んだのはこれが初めてであり、if ステートメントの構文を見ると完全に失われます。これを理解するための助けを得ることができれば、それは素晴らしいことです。

XPで動作する現在私が持っているものは次のとおりです。

    REM @ECHO OFF

    ECHO STARTING MOVEFILES

    SET EXITRC=0
    SET EXITMSG=EXITRC INITIALIZED
    ECHO %EXITRC% -- %EXITMS

    COPY "\\networkDrive\install\Individual\program\MOVEFILES.EXE" "C:\DOCUMENTS AND SETTINGS\ALL USERS\START MENU\PROGRAMS\STARTUP\"

    ECHO COPIED FILES TO YOUR PC  
    SET EXITRC=%ERRORLEVEL%
    IF NOT %EXITRC% == 0 GOTO :EXIT

    SET EXITMSG=PROCESSING COMPLETE

    :EXIT 
    ECHO STEP: %EXITMSG%  RC: %EXITRC%
    ECHO FINISHING MOVEFILES 
    PAUSE

    EXIT %EXITRC%

これが私がWindows 7用に持っているものです:

    @ECHO OFF

    ECHO STARTING MOVEFILESWIN7

    SET EXITRC=0
    SET EXITMSG=EXITRC INITIALIZED
    ECHO %EXITRC% -- %EXITMS

    COPY "\\networkDrive\install\Individual\program\MOVEFILES.exe" "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup"

    ECHO COPIED MOVEFILESWIN7 TO YOUR PC - All Users / Public Startup folder
    SET EXITRC=%ERRORLEVEL%
    IF NOT %EXITRC% == 0 GOTO :EXIT

    SET EXITMSG=PROCESSING COMPLETE

    :EXIT 
    ECHO STEP: %EXITMSG%  RC: %EXITRC%
    ECHO FINISHING MOVEFILESWIN7 

    PAUSE
    EXIT %EXITRC%

両方のシナリオをカバーするバッチ ファイルを 1 つだけ用意して、実行するバッチ ファイルをユーザーが混乱させないようにしたいと考えています。

4

1 に答える 1

4

環境変数を利用できます%ALLUSERSPROFILE%

WinXP では、デフォルトはC:\Documents and Settings\All Usersです。

Win7/2008 では、デフォルトはC:\ProgramData です。

ここで利用可能な表があります: http://ss64.com/nt/syntax-variables.html

別のファイルもコピーしているようです。なぜそうするのかわからない。ここでメソッドを使用して検出できるかもしれません: https://stackoverflow.com/a/2788764/1553090 -- それ以外の場合は、変数%ProgramFiles%%ProgramFiles(x86)%変数を利用する必要があります。

これらの変数の使用方法を詳しく説明すると、Win7 スタートアップ フォルダーの存在をテストできます。存在しない場合は、XP にフォールバックします (存在するかどうかに関係なく)。

set STARTUP_WIN7=%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\Startup
set STARTUP_WINXP=%ALLUSERSPROFILE%\Start Menu\Programs\Startup

if EXIST "%STARTUP_WIN7%" (
    set STARTUP=%STARTUP_WIN7%
) else (
    set STARTUP=%STARTUP_WINXP%
)
于 2013-07-10T22:45:07.960 に答える