视窗
根据帖子(dos批处理通过分隔字符串),我在下面编写了一个脚本,但没有按预期工作.
目标:给定字符串"Sun,Granite,Twilight",我想在循环中获取每个主题值,以便我可以使用该值进行一些处理.
当前输出不正确:
list = "Sun,Granite,Twilight"
file name is "Sun Granite Twilight"
Run Code Online (Sandbox Code Playgroud)
对于第一次迭代,它应该是:
list = "Sun,Granite,Twilight"
file name is "Sun"
Run Code Online (Sandbox Code Playgroud)
然后第二次迭代应该是"文件名是"花岗岩"等等.我做错了什么?
码:
set themes=Sun,Granite,Twilight
call :parse "%themes%"
goto :end
:parse
setlocal
set list=%1
echo list = %list%
for /F "delims=," %%f in ("%list%") do (
rem if the item exist
if not "%%f" == "" call :getLineNumber %%f
rem if next item exist
if not "%%g" == "" call :parse "%%g"
)
endlocal
:getLineNumber
setlocal
echo …Run Code Online (Sandbox Code Playgroud) 我知道有很多关于SO的相关问题,比如这一个或者这个问题,但由于某种原因我到目前为止无法获得任何工作.
我正在尝试创建一个批处理文件来连续安装几个软件:
这是我的批处理文件
set packages=(7zip.install, ^ :: for compression
notepadplusplus.install, ^ :: file editor
Firefox, ^
putty, ^
mysql -Version 5.5.30, ^
postgresql)
for %%i in %packages% do (
::echo %%i
cinst %%i
)
Run Code Online (Sandbox Code Playgroud)
一切正常,但对于mysql部分.这个空间实际上是一个分隔符,这意味着我得到了
E:\>(echo 7zip.install )
7zip.install
E:\>(echo notepadplusplus.install )
notepadplusplus.install
E:\>(echo Firefox )
Firefox
E:\>(echo putty )
putty
E:\>(echo mysql )
mysql
E:\>(echo -Version )
-Version
E:\>(echo 5.5.30 )
5.5.30
E:\>(echo postgresql )
postgresql
Run Code Online (Sandbox Code Playgroud)
我想最终得到的是
E:\>(echo mysql -Version 5.5.30 )
mysql -Version 5.5.30 …Run Code Online (Sandbox Code Playgroud)