我正在尝试编写一个批处理文件,将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%
我希望只有一个批处理文件可以涵盖这两种方案,因此用户不会混淆要运行哪个批处理文件。
答案 0 :(得分: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%
)