0

我已经阅读了这个帖子,它有帮助,但没有回答我的具体问题。我希望有人能帮忙。

我正在尝试导出包含两列数据的 CSV 文件。第 1 列是实际文件名(带扩展名),第 2 列是文件位置的直接文件夹名称(没有任何路径信息)。我的问题是,这可能吗?下一个问题是,如何将其导出为包含两列信息的 CSV 文件?

这是一个很好的起点,除了它只有文件名(没有显示直接文件夹名称的第二列),而且这似乎不会返回到每个文件名的下一行。相反,这只是用逗号分隔而不返回新行。

你能建议这是否可行并提供一些想法吗?

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

谢谢大家!

4

2 回答 2

0

如果“立即文件夹名称”是指包含目录的名称,但没有该目录的路径,则:

@ECHO OFF
SETLOCAL
PUSHD "%~1"
FOR /f "delims=" %%i IN ("%cd%") DO SET directory=%%~nxi
(
FOR /f "delims=" %%i IN ('dir /b /a-d /on') DO (
 SETLOCAL enabledelayedexpansion
 ECHO "%%i","!directory!"
 endlocal
)
)>filelist.csv
POPD

所需目录的路径名应作为第一个参数提供,必要时加引号。

本质上,切换到有问题的目录,找到并保存叶目录的名称,然后执行返回文件名的目录扫描。引用两者并用逗号输出。内部setlocal是允许至少一些愚蠢的目录名称。


编辑 20130422-1421Z

@ECHO OFF
SETLOCAL
PUSHD "%~1"
FOR /f "delims=" %%i IN ("%cd%") DO SET directory=%%~nxi
(
FOR /f "delims=" %%i IN ('dir /b /a-d /on') DO (
 SET fdate=%%~ti
 SETLOCAL enabledelayedexpansion
  ECHO "%%i","!directory!","!fdate:~0,10!"
 endlocal
)
)>filelist.csv
POPD

编辑以将日期显示为第三个元素。报价保留 - 随意删除。如果需要日期和时间,请删除该SET fdate行并将其替换"!fdate:~0,10!""%%~ti

日期和时间格式 - 可以肯定的是,需要知道您使用的格式。

于 2013-04-17T19:16:53.367 回答
0

如果您正在执行递归目录搜索,则只能在for /f循环中%%F使用%%~nxF. 这很容易。

更棘手的部分是从路径 ( %%~pF) 中抓取最后一个文件夹。不过,实际上也有一个简单的技巧。使用另一个循环来for获取%%~nxI. %%~dpF是的,filename.ext完整路径尾随目录。

但是,这仅在目录不以尾部反斜杠结尾时才有效。由于%%~dpF 确实以尾部反斜杠结尾,因此您只需在末尾添加一个点即可解决它。因此,"c:\users\me\Desktop\"您不会得到带有尾随点的~nxof 。"c:\users\me\Desktop\."

足够的解释。这是它是如何完成的。

@echo off

for /f "delims=" %%F in ('dir /s /b /o:n') do (
    for %%I in ("%%~dpF.") do echo "%%~nxF","%%~nxI"
) >filelist.csv
于 2013-04-17T19:29:15.393 回答