我有一个批处理文件,它从文本文件的第4行获取人名(名字姓氏),然后创建一个文件夹,其名称连接到" -ID"使用以下脚本。
问题是名称存储在姓氏后面有很多空格的文件中,因此当我创建文件夹时,文件夹名为"Firstname Lastname -ID"
。
任何建议我如何删除姓氏和" - "之间的空格。字符,以便文件夹名为"Firstname Lastname-ID"
?
SET id=abc111
set "xprvar="
for /F "skip=3 delims=" %%i in ('type "C:\My folder\name.txt"') do if not defined xprvar set "xprvar=%%i"
set foldername=%xprvar%"-"%id%
答案 0 :(得分:1)
您可以将Call
与%*
元变量一起使用,这会忽略任何尾随空格。
示例:
@Echo Off
Set "id=abc111"
For /F "Skip=3 Tokens=* UseBackQ" %%A In ("C:\My folder\name.txt") Do Call :Sub %%A & GoTo :Break
GoTo :EOF
:Break
Rem Your commands here
MD "%foldername%" 2>Nul
Pause
GoTo :EOF
:Sub
Set "foldername=%*-%id%"
GoTo :EOF
您还会注意到这适用于Jean-Claude Van Damme
等名称
编辑
以下修改应该考虑到您的文本文件不是使用Windows CRLF行结尾的标准ASCII文本文件的可能性。
@Echo Off
Set "id=abc111"
For /F "Skip=3 Tokens=*" %%A In ('Type "C:\My folder\name.txt"') Do Call :Sub %%A & GoTo :Break
GoTo :EOF
:Break
Rem Your commands here
MD "%foldername%" 2>Nul
Pause
GoTo :EOF
:Sub
Set "foldername=%*-%id%"
GoTo :EOF
答案 1 :(得分:0)
如果发布样本数据会更容易测试
for /F "tokens=1,2skip=3 delims= " %%i in ('type "C:\My folder\name.txt"') do if not defined xprvar set "xprvar=%%i %%j"
但是像#34; Jean-Claude Van Damme"
这样的名字会发生什么