Board logo

标题: [文本处理] 批处理输出文件列表如何去除扩展名和其他非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 编辑
  1. @echo off
  2. for /f "delims=" %%i in ('dir/a-d/s/b/l/on *.*') do (
  3. if /i not "%%~fi"=="%~f0" (
  4.   if /i "%%~xi"==".doc" (
  5.    echo,%%i
  6.   ) else if /i "%%~xi"==".docx" (
  7.    echo,%%i
  8.   ) else if /i "%%~xi"==".pdf" (
  9.    echo,%%i
  10.   )
  11. )
  12. )
  13. pause
复制代码
大概的代码就是这样自己输出,自己替换输出变量,变量扩展查阅for /?,整体括号导出也可以
作者: rdctgvf    时间: 2015-11-18 16:27

本帖最后由 rdctgvf 于 2015-11-18 16:42 编辑

代码WIN7下测试完成, 楼主列出的条件中 第3点和第4点 有矛盾 本身输出的文件名是以当前执行目录为主还是以FILE为主 我是按第3点帮你写的
---------------------------------------------------------------------------------------
  1. @echo off&setlocal enabledelayedexpansion
  2. set "FolderName="
  3. set "FileName="
  4. set "FolderPath=%cd%"
  5. set FileClass1=*.doc
  6. set FileClass2=*.pdf
  7. for /f "delims=" %%i in ("%cd%") do set FolderName=%%~ni
  8. echo 正在查找 ...
  9. echo.
  10. for /f "delims=" %%a in ('dir /b "%FolderPath%\%FileClass1%","%FolderPath%\%FileClass2%"') do (
  11.    set "FileName=%%~na"
  12.    echo !FileName! >> c:\"%FolderName%".txt
  13. )
  14. cls&echo;&echo;
  15. echo  --- 输出完成, 文件保存在 C:\%FolderName%.txt ---
  16. 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://bbs.bathome.net/) Powered by Discuz! 7.2