从USB复制.bat并将其复制到Startup文件夹脚本 - WinXP

时间:2011-10-24 20:18:34

标签: windows batch-file command-prompt

我是Mac / iPhone开发人员,所以我对Windows脚本编程不太了解... 关键是我必须在许多计算机上安装一个启动应用程序,所以我想要一个带有两个.bat文件的USB记忆棒:

  1. 将是实际的“app”
  2. 将把我的USB上的1st.bat复制到Windows启动文件夹...
  3. 我该怎么做?

    我的USB名称是“USB”,我的启动应用程序的名称是“startup.bat”。 我已经说过了,我在Windows编程方面非常蹩脚,我急需它;)

    非常感谢!

3 个答案:

答案 0 :(得分:3)

尝试以下脚本。这将导致应用程序在当前用户登录时运行。如果没有管理权限,您将无法一次性为所有用户执行此操作。

@Echo Off
CD /D %~dp0
Set StartupFolder=%AppData%\Microsoft\Windows\Start Menu\Programs\Startup
If Exist "%StartupFolder%" Goto :FoundStartup
Set StartupFolder=%UserProfile%\Start Menu\Programs\Startup
If Exist "%StartupFolder%" Goto :FoundStartup
Echo Cannot find Startup folder.
Exit /B

:FoundStartup
Copy "MyApp" "%StartupFolder%"

每一行都执行以下操作:

  1. 关闭命令回显,使脚本看起来更清晰。
  2. 将当前目录设置为此脚本所在的位置。
  3. 在Windows Vista或更高版本中按预期设置Startup文件夹的路径。
  4. 如果此文件夹存在,请跳至复制阶段。
  5. 在Windows 2000或更高版本中按预期设置Startup文件夹的路径。
  6. 如果此文件夹存在,请跳至复制阶段。
  7. 报告无法找到“启动”文件夹。
  8. 退出批处理脚本
  9. 可以跳转到的标签。
  10. 将“MyApp”从当前文件夹(USB)复制到“启动”文件夹。

答案 1 :(得分:1)

我不想因为Hand-E-Food的回答而受到赞扬,但我弄清楚为什么他的代码不起作用而且我无法回复他的回答,所以在这里。不要在%StartupFolder%行的Copy变量周围使用引号,而是在Set StartupFolder的路径周围使用它们。因此,代码如下。

@Echo Off
CD /D %~dp0
Set StartupFolder="%AppData%\Microsoft\Windows\Start Menu\Programs\Startup"
If Exist %StartupFolder% Goto :FoundStartup
Set StartupFolder="%UserProfile%\Start Menu\Programs\Startup"
If Exist %StartupFolder% Goto :FoundStartup
Echo Cannot find Startup folder.
Exit /B

:FoundStartup
Copy "MyApp" %StartupFolder%

我想出这个的唯一原因是因为它也没有为我做任何事情,所以我尝试删除%StartupFolder%周围的引号,这导致出现错误消息找不到文件夹,但至少我知道它最后正在做些什么。一旦我发现它正在寻找错误的文件夹,因为它认为文件夹名称在其名称的第一个空格处停止,我只需在引号中添加并瞧!

答案 2 :(得分:0)

尝试此操作(将app.bat替换为您调用的实际应用程序)。这应该适用于Windows 2000及更高版本。

IF EXIST "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\*.*" COPY APP.BAT "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\"
IF EXIST "C:\Documents and Settings\All Users\Start Menu\Programs\Startup\*.*" COPY APP.BAT "C:\Documents and Settings\All Users\Start Menu\Programs\Startup\"