【发布时间】:2017-05-18 07:57:16
【问题描述】:
所以我要做的是在一个参数中去除字符串中的每个字符,除了第一个字符。
This is the closest I've found so far 但它的工作方式不同。
C:\vbackup.bat test e: c:\temp
@echo off
IF /I NOT "%2" == "c:" (
:echo %%2:~0,1% // I personally prefer this since it will only be used once
:: Test
SET var=%2
SET var2=%var:~0,1%
CALL :show "0,1"
echo.
echo Backing up entire %2 to %3\%1
echo.
pause
exit
)
:show
echo Test : var=%var% var2=%var2%
GOTO :eof
结果:
Test : var=e: var2=~0,1
【问题讨论】:
-
我建议打开一个命令提示符窗口并首先运行
call /?。显示在几个窗口页面上的输出帮助解释了如何引用批处理文件参数,而不使用或使用%~d2之类的修饰符,该修饰符扩展为仅带有第二个参数冒号的驱动器号,例如E:。接下来在命令提示符窗口set /?中运行并阅读关于delayed expansion 的章节,当您在命令块中定义环境变量并希望在同一块中访问此环境变量的值时,您将需要在这里。 -
你需要一个普通的环境变量来做sub-string expansion,它不能用于像
%2这样的参数引用。在单个代码块中修改和读取变量时,需要delayed expansion。
标签: batch-file