文件名和路径提取 - 多个文件夹

时间:2017-07-17 15:52:07

标签: batch-file cmd

我在驱动器中有一组文件夹,需要提取具有相似名称的所有文件的路径和文件名(即index_lms.htmindex*.htm)。我需要这些进入一个csv文件,我将在大量上传模板中操作和使用它。这可以通过cmd shell还是批处理文件? (自从我尝试写这些以来已经有一段时间了。)

今天任务的规模变得更糟.......我现在有1000门英语课程,以及德语,土耳其语和俄语的翻译版本。所以我真的需要一个批处理解决方案来提取这些路径名 - 谢谢。

文件名中出现的另一个问题是没有空格,我发现它们的文件名中都有多个空格。在读取路径/文件名时,这是否易于编辑?

快速回答Gung - 将文件加载到LMS系统中,而elearning的目标文件通常是index.html或index_lms.html或index_html5.html。然而LMS也提供文件(我当前的问题)在我的情况下,他们都是pdf与标准命名约定

3 个答案:

答案 0 :(得分:1)

此批处理将迭代给定的文件夹,并递归搜索它们以索引开头的任何文件,并创建一个带有标题的csv以及列File,Path和PathFile。

@Echo off
SetLocal EnableExtensions
( Echo "File","Path","PathFile"
  For %%A in (
    "X:\Test\"
    "Y:\Home\Customer\"
    "Z:\Users\UserName\"
  ) Do Call :Search "%%~A"
) > "%~dpn0.csv"
Goto :Eof
:Search 
For /R %1 %%B in (index*.htm*) Do Echo "%%~nxB","%%~dpB","%%~fB"

输出文件将具有与批处理文件相同的驱动器,路径和名称,但扩展名为.csv

答案 1 :(得分:0)

这将创建文件 out.csv 。替换你自己的dir模式匹配。

del 2>nul out.csv
for /f "delims=" %%f in ('dir/s/b c:\index*.htm') do <nul set /p =%%f,>>out.csv

答案 2 :(得分:0)

这是在PowerShell中执行此操作的另一种方法。

PS C:\src\t> type .\f2csv.ps1
$dirs = 'C:\src\t', 'C:\labs'

foreach ($dir in $dirs) {
    Get-ChildItem -File '*.txt' -Recurse |
        Select-Object @{Expression={$_.FullName}; Label="filename"} |
        Export-Csv -Path '.\f2csv.csv' -Delimiter ',' -NoTypeInformation
}
PS C:\src\t> .\f2csv.ps1
PS C:\src\t> type .\f2csv.csv
"filename"
"C:\src\t\iosloginfo\lognextnum.txt"
"C:\src\t\t\file1.txt"
"C:\src\t\t\file10.txt"
"C:\src\t\t\file2.txt"