Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 为什么Delimeter不起作用?_Batch File_Delimiter - Fatal编程技术网

Batch file 为什么Delimeter不起作用?

Batch file 为什么Delimeter不起作用?,batch-file,delimiter,Batch File,Delimiter,我试图用分隔符来划分文件,但它似乎用行来划分文件 这是我的密码: FOR /f "tokens=* delims=:" %%x in (SomeFile.txt) DO echo %%x 下面是SomeFile.txt: 1:2:3:4:5:6:7 8:9:10:11:12:13:14 ... 我希望是: 一, 2. 3. 4. 5. 但我得到的是原样的文件: 1:2:3:4:5:6:7 8:9:10:11:12:13:14 对此的解释是什么?for/f从文件中读取行,并根据分隔符集和

我试图用分隔符来划分文件,但它似乎用行来划分文件

这是我的密码:

FOR /f "tokens=* delims=:" %%x in (SomeFile.txt) DO echo %%x
下面是SomeFile.txt: 1:2:3:4:5:6:7 8:9:10:11:12:13:14 ...

我希望是:

一, 2. 3. 4. 5.

但我得到的是原样的文件: 1:2:3:4:5:6:7 8:9:10:11:12:13:14

对此的解释是什么?

for/f从文件中读取行,并根据分隔符集和标记设置标记它们

由于您使用令牌=*,所有令牌都被分配给元变量%%x

最好是发布真实数据,因为解决方案可能会受到实际数据格式的影响,但为了产生结果,另一种方法是:

@回音 SETLOCAL 设置sourcedir=U:\sourcedir 设置文件名1=%sourcedir%\q44868366.txt 对于%filename1%中的/f delims=%%a,请调用:unclon%%a 后藤:EOF :未克隆 设置行=%~1 对于%%t,在%line::=%DO ECHO%%~t 后藤:eof 我将变量filename1设置为包含测试数据的文件

在这里,每一行依次分配给%%a,然后由子程序unclon处理

子例程接受第一个要换行的参数,并用~modifier删除包含的引号

然后,变量行将每个冒号替换为,结果字符串本身用双引号括起来。结果是一系列带引号的字符串,由simple for then处理,依次将每个字符串分配给%%t,echo为每个字符串生成一行,其中包含的引号再次被~


…但很大程度上取决于所涉及的实际数据。

除了不同数量的标记外,另一个问题完美地演示了如何使用分隔符将文本文件拆分为标记。您是否在键入/时阅读过帮助文本?进入命令提示窗口?