删除特殊字符和任何其他字符批处理文件之间的空格

时间:2018-06-11 09:04:51

标签: batch-file

我有一个批处理文件,它从文本文件的第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%

2 个答案:

答案 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"

这样的名字会发生什么