我在驱动器中有一组文件夹,需要提取具有相似名称的所有文件的路径和文件名(即index_lms.htm
或index*.htm
)。我需要这些进入一个csv文件,我将在大量上传模板中操作和使用它。这可以通过cmd shell
还是批处理文件? (自从我尝试写这些以来已经有一段时间了。)
今天任务的规模变得更糟.......我现在有1000门英语课程,以及德语,土耳其语和俄语的翻译版本。所以我真的需要一个批处理解决方案来提取这些路径名 - 谢谢。
文件名中出现的另一个问题是没有空格,我发现它们的文件名中都有多个空格。在读取路径/文件名时,这是否易于编辑?
快速回答Gung - 将文件加载到LMS系统中,而elearning的目标文件通常是index.html或index_lms.html或index_html5.html。然而LMS也提供文件(我当前的问题)在我的情况下,他们都是pdf与标准命名约定
答案 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"