标题: [文本处理] 批处理输出文件列表如何去除扩展名和其他非DOC文件? [打印本页]
作者: 尼古丁vs乙醇 时间: 2015-11-18 14:29 标题: 批处理输出文件列表如何去除扩展名和其他非DOC文件?
文件夹内所有的文件输出到TXT文件,如何去除扩展名和其他非DOC文件
之前我写的代码是简单的:DIR /B > A.TXT
1、输出的文件名都有扩展名,如何去除?
2、我制成的BAT文件需要放在每个文件夹中,然后进行双击运行。但是过程中有许多并非自己希望的文件,比方说程序本身的BAT文件名、输出的文件A.TXT、EXE、JPG等格式的文件。这些文件名也在A.TXT中出现了,如何筛选,要求只剩下DOC、DOCX和PDF文件
3、如何将输出的TXT文件按照本身的文件夹命名?
4、如果我像输出所有的DOC、DOCX和PDF文件名至file.txt,代码需要怎么写?
谢谢各位大神了。。。:)
作者: /zhqsystem/zhq 时间: 2015-11-18 16:21
本帖最后由 /zhqsystem/zhq 于 2015-11-18 16:23 编辑
- @echo off
- for /f "delims=" %%i in ('dir/a-d/s/b/l/on *.*') do (
- if /i not "%%~fi"=="%~f0" (
- if /i "%%~xi"==".doc" (
- echo,%%i
- ) else if /i "%%~xi"==".docx" (
- echo,%%i
- ) else if /i "%%~xi"==".pdf" (
- echo,%%i
- )
- )
- )
- pause
复制代码
大概的代码就是这样自己输出,自己替换输出变量,变量扩展查阅for /?,整体括号导出也可以
作者: rdctgvf 时间: 2015-11-18 16:27
本帖最后由 rdctgvf 于 2015-11-18 16:42 编辑
代码WIN7下测试完成, 楼主列出的条件中 第3点和第4点 有矛盾 本身输出的文件名是以当前执行目录为主还是以FILE为主 我是按第3点帮你写的
---------------------------------------------------------------------------------------- @echo off&setlocal enabledelayedexpansion
-
- set "FolderName="
- set "FileName="
- set "FolderPath=%cd%"
- set FileClass1=*.doc
- set FileClass2=*.pdf
- for /f "delims=" %%i in ("%cd%") do set FolderName=%%~ni
-
- echo 正在查找 ...
- echo.
- for /f "delims=" %%a in ('dir /b "%FolderPath%\%FileClass1%","%FolderPath%\%FileClass2%"') do (
- set "FileName=%%~na"
- echo !FileName! >> c:\"%FolderName%".txt
- )
- cls&echo;&echo;
- echo --- 输出完成, 文件保存在 C:\%FolderName%.txt ---
- pause>nul
复制代码
作者: 尼古丁vs乙醇 时间: 2015-11-20 10:10
回复 3# rdctgvf
太牛啦,不过没有输出子文件夹的文件。。。
作者: rdctgvf 时间: 2015-11-21 13:05
回复 3# rdctgvf
修改以上命令 为 dir /b /s "%FolderPath%\%FileClass1%","%FolderPath%\%FileClass2% 就可以查看子目录中的文件了
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |