Batch file 批次包括';空间';“之后”;“熟食店”;
这是我的批处理行:Batch file 批次包括';空间';“之后”;“熟食店”;,batch-file,Batch File,这是我的批处理行: For /F "tokens=1,2 delims=: " %%i in (list.txt) do echo %%i%%j 包含哪些列表。文本: C:\Document and Setting\My Folder 上面一行显示:C\Document 但我真正想要的是:C\Document and Setting\My Folder 问题是在“delims=:”不会获取“空格”之后,我可以使用“delims=“获取空格,但我不希望字符串中包含:” 有什么想法吗?你可以试试
For /F "tokens=1,2 delims=: " %%i in (list.txt) do echo %%i%%j
包含哪些列表。文本:
C:\Document and Setting\My Folder
上面一行显示:C\Document
但我真正想要的是:C\Document and Setting\My Folder
问题是在“delims=:”
不会获取“空格”之后,我可以使用“delims=“
获取空格,但我不希望字符串中包含:”
有什么想法吗?你可以试试:
@echo off
setlocal enableDelayedExpansion
For /F "tokens=* delims=" %%i in (list.txt) do (
set "drive=%%~di"
echo !drive:~0,1!%%~pi%%~ni
)
在这里,您可以看到参数/标记是如何展开的->您可以尝试使用:
@echo off
setlocal enableDelayedExpansion
For /F "tokens=* delims=" %%i in (list.txt) do (
set "drive=%%~di"
echo !drive:~0,1!%%~pi%%~ni
)
在这里,您可以看到参数/标记是如何展开的->您正在告诉
for
命令由于您使用的标记而按:
和空格进行拆分。将字符串按:
分隔为2,并使用标记=1*
将:
之前的所有内容分配给%%i
元变量,剩余部分分配给%%j
,包括空格:
@For /F "tokens=1* delims=:" %%i in (list.txt) do echo %%i%%j
您告诉
for
命令按:
和空格分割,因为您使用了令牌。将字符串按:
分隔为2,并使用标记=1*
将:
之前的所有内容分配给%%i
元变量,剩余部分分配给%%j
,包括空格:
@For /F "tokens=1* delims=:" %%i in (list.txt) do echo %%i%%j
好的,您将冒号和空格定义为分隔符…实际上,我发现只要使用引号(“”)就可以解决问题(对于/F“tokens=1,2 delims=:“%%I in(list.txt)do echo”%%I%%j”)不,因为引号是输出的一部分…好的,您将冒号和空格定义为分隔符…实际上,我发现只要使用引号(“”)就能解决问题(对于/F“tokens=1,2 delims=:”(list.txt)中的%%I do echo“%%I%%j”)否,因为引号是输出的一部分。。。