【发布时间】:2014-08-04 12:29:09
【问题描述】:
我正在编写一个 - 我认为 - 简单的脚本,它可以安装多个程序。
让我们看看,这是我的目录,里面有强制文件。
- C:\variables.ini
- C:\programs.txt
- C:\update.cmd
- C:\scan.cmd
- C:\storage\ *.exe
*.exe 的示例是“scribus-1.4.4-windows-x64.exe”
variables.ini 包含
prog=C:\programs.txt
programs.txt 包含
scribus-1.4.4-windows-x64.exe
scan.cmd 包含
dir C:\storage /b /a-d > programs.txt
现在的问题:update.cmd
@ECHO OFF & SETLOCAL
REM Read variables
for /f %%i in (C:\variables.ini) do set %%i
cd C:\storage\
for /f %%i in %prog% do %%i /Q /S
ping localhost -n 5 > nul
del %%i
ping localhost -n 5 >nul
exit
update.cmd 是如何工作的?
我有一个主要的 .cmd 从那里我调用多个 .cmd 文件来做几件事。如您所见,我首先运行的是scan.cmd。它扫描 c:\storage\ 目录并将内容写入 c:\programs.txt。在 variables.ini 中是作为 %prog% 变量嵌入的programs.txt 文件。现在我运行update.cmd,它从programs.txt中获取第一个变量程序,在本例中为scribus,并使用/silent和/quiet标志开始安装(一些程序使用/s和其他/q,但不是两者,也许是一个可能的错误,但我没有更好的主意)。安装后等待 5 秒钟,然后删除 .exe 文件。如果还有其他可执行文件,则脚本再次启动,直到存储目录为空。
我希望你能理解我...我尝试了一些其他的方法,但我失败了。 所以我在没有变量文件的情况下尝试了它并在update.cmd中执行了扫描命令
@ECHO & SETLOCAL
cd C:\storage\
for /F %%i in ('dir C:\storage /b /a-d') do set %%i
%%i /Q /S
ping localhost -n 5 >nul
pause
我得到了一些错误,即 scribus 不是环境变量。我不知道为什么它应该是任何人?我尝试了谷歌并阅读了许多关于 for 循环的教程和线程,但没有人从变量执行设置文件。
有谁知道我可以解决这个问题的方法吗? 非常感谢提前!
【问题讨论】:
标签: windows variables for-loop cmd executable