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”)否,因为引号是输出的一部分。。。