2012-03-08 99 views
0

您能否帮我列出表格格式的文件(我喜欢批处理文件)。对于列表命令,我会使用dir/b/o:n按名称对文件进行排序..但是这会产生段落。我需要将文件列表复制到xls表格...并且这些文件将在列中。所以我的问题是这样的:获取CMD中表格格式的文件列表

如果你有像1,2,3,4,5 ...等文件,我希望他们写在一行,其中制表符用作文件之间的分隔符。

+0

你的代码失败了吗? – jeb 2012-03-08 12:59:15

回答

2

“哪里使用制表符(?)作为分隔符”???如果你想用Excel打开文件,那么最简单的选择是使用逗号作为分隔符(.CSV格式)。由于逗号可以出现在文件名中,因此您希望将这些名称用引号引起来。

如果按名称排序,那么简单的FOR是最有效的选项,因为它总是按名称排序。您可以使用<nul SET /P将每个文件名输出到.CSV文件,而无需引入新行。

@echo off 
<nul (
    for %%F in (*) do set /p =""%%F"," 
) >fileList.csv 

如果你真的想使用DIR命令,那么你需要FOR/F。我能看到这样做的唯一原因是如果你想改变排序顺序。我设置了EOL=:以防止以分号开头的文件名的可能性不大。有效的文件名(或文件路径)永远不能以冒号开头。

@echo off 
<nul (
    for /f "eol=: delims=" %%F in ('dir /b /o:n') do set /p =""%%F"," 
) >fileList.csv 
+0

感谢您的帮助。我已经发现在Open Office或Excel中使用插入“转置”功能的速度更快。我以前没有意识到。只是将dir重定向到文件,然后插入data do列,然后复制它们并用转置插入。注意你的命令。 user1141649 2012-03-08 19:15:48

+1

它将输入重定向到nul设备(禁用输入),以便括号内的所有内容。它实际上只需要SET/P命令,但是对于整个块执行一次操作比对每次循环迭代操作更有效。 – dbenham 2012-03-08 20:17:45

+0

为什么在命令集中有第二个引号set/p =“”%% F“,”我的意思是引用%% F? – user1141649 2012-03-30 12:14:36