Batch file 需要一个可以根据文件名查找文件夹的批处理文件
我需要一个批处理文件或实用程序,可以找到任何不再需要的“未压缩的存档文件夹”,现在可以删除,因为原始存档文件仍然存在 关键是“未压缩文件夹”和“原始存档文件”除了存档文件的文件扩展名外,始终具有相同的名称。我不想自动删除任何内容;我只想创建一个可以手动签出的文件夹列表。因此,顺序将是一个4步过程: 1) 使用通配符(如*.zip、*.rar、*.iso)搜索所有存档文件 2) 创建找到的所有文件名的列表-减去文件扩展名 3) 使用在步骤2中创建的列表搜索具有这些名称的任何文件夹 4) 使用第三步中找到的任何文件夹创建一个文本文件 我试图修改我在这些帖子中找到的一个批处理文件,但没有成功,我想从头开始。任何帮助都将不胜感激Batch file 需要一个可以根据文件名查找文件夹的批处理文件,batch-file,Batch File,我需要一个批处理文件或实用程序,可以找到任何不再需要的“未压缩的存档文件夹”,现在可以删除,因为原始存档文件仍然存在 关键是“未压缩文件夹”和“原始存档文件”除了存档文件的文件扩展名外,始终具有相同的名称。我不想自动删除任何内容;我只想创建一个可以手动签出的文件夹列表。因此,顺序将是一个4步过程: 1) 使用通配符(如*.zip、*.rar、*.iso)搜索所有存档文件 2) 创建找到的所有文件名的列表-减去文件扩展名 3) 使用在步骤2中创建的列表搜索具有这些名称的任何文件夹 4) 使用第三步
谢谢好的,我会一步一步地做: 步骤1: 请注意,如果使用windows 7,则计算机上应该有
where
实用程序
步骤2:
上面的代码不会处理带句点的文件名
步骤3:
不是100%确定上述方法是否有效,如果无效,请告诉我
步骤4:
我很有信心这会奏效。当然,我还没有测试过这一点,但是使用@Echo on
和每个部分之间的暂停命令(或作为单独的批处理文件)来运行所有这些,这样,如果发生了eror,我可以尝试帮助您
希望这有帮助,蒙纳
@echo off
setlocal enableextensions
set "rootDir=d:\_data_"
set "fileList=%~dp0\%~n0.files.list"
set "folderList=%~dp0\%~n0.folders.list"
rem generate list of compressed files names
break > "%fileList%"
for /F "tokens=*" %%f in ('where /r "%rootDir%" *.zip *.rar *.iso *.7z 2^>nul') do (
>> "%fileList%" echo %%~nf
)
rem check compressed file list against directory list
break > "%folderList%"
for /F "tokens=*" %%f in ('dir "%rootDir%" /s /b /ad ^| findstr /e /g:"%fileList%" ') do (
>> "%folderList%" echo %%f
)
type "%folderList%"
endlocal
ren log.txt log.tmp
for /f "delims=." %%a in (log.tmp) do (Echo %%a >> log.txt)
del log.tmp
for /f "tokens=*" %%a in (log.txt) do (
where /r %dir% %%a* >> files.txt
)
Rem This code will handle file paths to directories
Ren files.txt files.tmp
for /f "tokens=*" %%a in (files.tmp) do (
Echo %%~pa >> files.txt
)
del files.tmp
Rem The below code will ged rid of repeated direcotries
ren files.txt files.tmp
Echo. > files.txt
setlocal enabledelayedexpansion
for /f "tokens=*" %%a in (files.tmp) do (
set var=1
for /f "tokens=*" %%b in (files.txt) do (
if "%%~a" equ "%%~b" set var=0
)
if !var!==1 Echo %%a >> files.txt
)
del files.tmp
@echo off
setlocal enableextensions
set "rootDir=d:\_data_"
set "fileList=%~dp0\%~n0.files.list"
set "folderList=%~dp0\%~n0.folders.list"
rem generate list of compressed files names
break > "%fileList%"
for /F "tokens=*" %%f in ('where /r "%rootDir%" *.zip *.rar *.iso *.7z 2^>nul') do (
>> "%fileList%" echo %%~nf
)
rem check compressed file list against directory list
break > "%folderList%"
for /F "tokens=*" %%f in ('dir "%rootDir%" /s /b /ad ^| findstr /e /g:"%fileList%" ') do (
>> "%folderList%" echo %%f
)
type "%folderList%"
endlocal