我在一个简单的批处理命令中遇到问题,我无法理解为什么“令牌”选项无法正常工作。我想要做的是使用dir命令在批处理文件中列出文件夹的内容,并过滤输出以仅显示文件的大小和名称。还有一个我会将输出重定向到一个文件。批量令牌问题
例如,包含3个PDF文件的文件夹中执行的默认目录输出如下:
Volume in drive C is Windows
Volume Serial Number is 8E72-826A
Directory of C:\Test
16.04.2015 08:36 <DIR> .
16.04.2015 08:36 <DIR> ..
02.07.2014 14:35 428.974 Metrou (2).pdf
02.07.2014 14:35 428.974 Metrou (3).pdf
02.07.2014 14:35 428.974 Metrou.pdf
3 File(s) 1.286.922 bytes
2 Dir(s) 123.298.713.600 bytes free
我试图获得如下结果:
428.974 Metrou (2).pdf
428.974 Metrou (3).pdf
428.974 Metrou.pdf
为了实现我正在尝试以下代码:
FOR /f "tokens=3,*" %%G IN ('dir C:\Test\*.* ^| find "pdf"') DO echo %%G >> abo.txt
结果只有大小,我i ŝ确实令牌3,但它应该继续与剩下的令牌我如何指示:*后3
428.974
428.974
428.974
我也试图与其他选项“令牌= 3 *”,但具有相同的结果。如果我改变令牌其他号码2为例,它正确地显示了小时在我们的例子:
14:35
14:35
14:35
所以它似乎是阅读我的令牌选项,但只有=后面的第一个数字。我没有使用过delims,因为输出只有空格,默认情况下这个空格是作为分隔符读取的,我也可能在他们的名字中包含空格的文件,就像上面的例子。 此外,代码将保存在.bat文件中。
任何想法为什么它忽略*或*标记?
感谢和问候,
尤利安
'找到 “PDF” 将找到'pdf',但不是'PDF '。你应该使用'/ i'参数。无论如何:你为什么使用'find“pdf而不是'dir * .pdf'? – Stephan
这的确更短,谢谢Stephan! – iconstan
Stephan,实际上dir * .pdf会传递给输出,它将被重定向到一个文件,我不需要这些文件。例如:驱动器C是Windows 编号是8E72-826A C:\ Users \%userprofile%\ Desktop和底部的磁盘空间信息:879.104字节 123.234.299.904字节空闲 – iconstan