Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 文件名和路径提取-多个文件夹_Batch File_Cmd - Fatal编程技术网

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

Batch file 文件名和路径提取-多个文件夹,batch-file,cmd,Batch File,Cmd,我在驱动器中有一组文件夹,需要提取具有相似名称的所有文件的路径和文件名(即,index_lms.htm或index*.htm)。我需要这些进入一个csv文件,我将在一个大批量上传模板操作和使用。这可以通过cmd shell或批处理文件实现吗?(我已经有一段时间没有写这些了。) 今天任务的规模变得更大了。。。。。。。我现在有1000门英语课程,还有德语、土耳其语和俄语的翻译版本。所以我真的需要一个批处理解决方案来提取这些路径名-谢谢 另一个问题出现在文件名不能有空格,我看到他们所有人的文件名中都有

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

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

另一个问题出现在文件名不能有空格,我看到他们所有人的文件名中都有多个空格。在读取路径/文件名时,这是否易于编辑


快速回答Gung-文件加载到LMS系统中,电子学习的目标文件通常为index.html或index_LMS.html或index_html5.html。然而,LMS也提供文档(我的最新版本),在我的例子中,它们都是pdf格式,具有标准命名约定

这将创建文件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
del 2>nul out.csv
对于/f“delims=“%%f in('dir/s/b c:\index*.htm')do>out.csv

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

@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

这里是在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"

我的解决方案是
find[topdir]-键入f>filename
,然后通过
filename
搜索您想要的内容。在DOS/Windows中,我认为
dir/s[topdir]
做了类似的事情。我可能误解了这个问题。您对“相似”的定义是什么?您是否有一个具体的名称列表,如“索引”、“测试”、“dskspc”等。?你希望剧本能确定什么是“相似的”吗?我刚刚运行了这一套,我工作得非常完美。你绝对是个明星!如果你发现有帮助的答案,你应该考虑和/或