我需要Windows NT命令脚本来执行以下操作:
- 从命令行读取变量字符串
- 获取该变量并根据每个单词的第1个字节创建新字符串
Windows NT命令脚本中的传入字符串为%1
。
字符串的长度和单词数可能不同,但始终以(something here) [something there]
结尾。
示例 - 来自命令行的传入值,包括引号:
"This is my string for a new name (comment) [comment 2]"
我需要创建的字符串是:
Timsfann
这些字符来自上述字符串中每个字词的第一个字母,当它到达(comment)
中的括号时停止。
上面的字符串将与日期/时间字符串连接以创建唯一的文件名。完成的字符串应设置为系统变量,以便程序可以找到完成的值。
任何帮助都将不胜感激。
我一直在尝试使用FOR
循环,但似乎无法按需运行。
答案 0 :(得分:2)
@Crimsyn,如果您更容易理解,这是另外一种方法,没有使用延迟扩展或FOR语句< / EM>:
@Echo Off
Call :Loop %~1
Echo(%oStr%&Pause
Exit/B
:Loop
If "%~1"=="" GoTo :EOF
Set "iStr=%~1"
If "%iStr:~,1%"=="(" GoTo :EOF
Set "oStr=%oStr%%iStr:~,1%"
Shift&GoTo Loop
答案 1 :(得分:2)
另一个!虽然更简单,更短,但这种方法可能更难理解...... ;)
@echo off
setlocal EnableDelayedExpansion
set "str=%~1 "
set "str=%str:(= " & rem %
set "result="
set "word=%str: =" & set "result=!result!!word:~0,1!" & set "word=%"
echo %result%
提示:使用echo on
答案 2 :(得分:1)
只有少数几种方法可以做到这一点。
@echo off
setlocal enabledelayedexpansion
for /f "tokens=1 delims=(" %%G IN ("%~1") do set "line=%%G"
FOR %%G IN (%line%) DO (
set tline=%%G
set code=!code!!tline:~0,1!
)
echo %code%
pause