我想找到一种方法来搜索特定路径中的特定目录或驱动并将它们打印到文件中以供进一步使用。
例如在以下结构中:
D:\Dir1\Dir2\Wanteddir
D:\Dir1\Dir3\Wanteddir
D:\Dir1\Dir4\Wanteddir
它应该创建一个文件“result.txt”,其格式与上面完全相同。
现在我从头开始创建一个脚本,并对现有的scrips进行一些研究。 让这个工作。
@echo off
setlocal enabledelayedexpansion
set "tmp_result_file=temp.txt"
set "result_file=result.txt"
if exist %tmp_result_file% del %tmp_result_file%
if exist %result_file% del %result_file%
dir d: /s > temp.txt
set /p searchdir=Please enter the directory name:
for /f "tokens=3* delims= " %%i in ('FINDSTR /C:"\%searchdir%" %tmp_result_file%') do echo %%i >> %result_file%
for /f "tokens=1,2,3 delims= " %%a in ('find /C "\%searchdir%" %result_file%') do set "amount=%%c"
echo.
Echo The list of found directories is %amount% lines long and contains following paths.
echo.
type result.txt
现在这个代码的问题是,它“捕获”包含输入单词的所有目录。在目录名称的开头。
因此,如果我输入“Wanted”而不是“Wanteddir”,脚本将搜索所有以“Wanted”开头的目录
例如:
D:\Dir1\Dir2\Wanteddir
D:\Dir1\Dir3\Wanteddir
D:\Dir1\Dir4\Wanteddir
D:\Wanted\Exampledir
D:\Dir1\Wantedtest\Exampledir
etc..
我很感激对此问题的任何建议。 也许你也可以建议一些更可靠的方法来做这样的搜索。 另一个问题是,“delims”是一个空间。因此,如果有人在目录名中使用空格,那么输出也会有些垃圾。
到目前为止。答案 0 :(得分:0)
完全匹配
dir /s /b /ad wanted
或
包含想要的
dir /s /b /ad *wanted*
将文件放入桌面
dir /s /b /ad *wanted* > "%userprofile%\desktop\Results.txt"
始终关注dir
和forfiles
进行文件列表和搜索。
答案 1 :(得分:0)
首先无需获取所有文件/文件夹的列表 - 您可以直接跳到答案。
有人可能会认为connect(menu->exit, &QPushButton::clicked(), [&this]{ exit_button_clicked(); });
会起作用。
不幸的是,如果您在没有任何通配符的情况下对文件夹名称执行DIR,则DIR命令假定您要查看该文件夹,而不是列出该特定文件夹名称: - (
解决方案是添加通配符,但随后将结果通过管道传输到FINDSTR以清除不需要的文件夹:
dir /b /s /ad d:wantedDir
dir /b /s /ad d:wantedDir* | findstr /iec:"\\wanteddir" >result.txt
选项使搜索忽略大小写。
/I
选项使搜索仅匹配每行的结尾。
/E
选项使搜索成为文字搜索,并在搜索中允许空格。
前导/C
代表单个\\
,文字FINDSTR搜索有时需要将反斜杠转义为\
,这是一个奇怪的怪癖。