[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] [已解决]批处理如何将一个文件夹中的多个文件名输出到TXT文本中

各位大神,新人求指教,现在需要将D:\testpdf中的PDF文件名提取到D:\testpdf\1.txt 中。
     但是由于PDF文件同个文件名有不同版本号,我只需要提取一个,判别条件是取前11位,相同文件只需在1.txt中出现一次,该如何实现?
     例如下面这个图面,最终我要在1.txt中得到下面的输出:
      1070924392_
      1070928211_
      1070928396_
      Z10M1005493 javascript:;

      求高手指点,非常感谢!!!
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

我只会输出所有,不会提取,有没有大神指点一下,这是我弄的
@echo off

set listfile=D:\testpdf\1.txt

if exist %tmp%\tmp.txt del %tmp%\tmp.txt
if exist "%listfile%" del "%listfile%"

echo 正在查找PDF文件...
dir /s /b "D:\testpdf"|find /i ".pdf">>%tmp%\tmp.txt


echo.
echo 正在输出结果...

for /f "delims=" %%i in (%tmp%\tmp.txt) do (
echo %%~ni>>"%listfile%"
title=%%~fi
)
del %tmp%\tmp.txt
copy /y "%listfile%" "D:\testpdf"

exit /b

TOP

最后输出是这样的
1070924392_A
1070924392__
1070928211_A
1070928211__
1070928396_B
1070928396_C
1070928396_D
Z10M1005493_A
Z10M1005493_B
Z10M1005493_C
Z10M1005493__

TOP

来个python的,
  1. import os
  2. import sys
  3. f11name = set(i[0:11] for i in os.listdir(os.path.dirname(sys.argv[0])) if i[-3:]=="pdf")
  4. with open("1.txt","w") as f:
  5.     for i in f11name:
  6.         f.write(i)
  7.         f.write("\n")
复制代码
1

评分人数

TOP

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. (for /f "delims=" %%i in ('dir /b "D:\testpdf\*.pdf"') do (
  4.     set "FileName=%%~ni"
  5.     set "FilePrefix=!FileName:~0,11!"
  6.     if not defined v!FilePrefix! (
  7.         echo,!FilePrefix!
  8.         set v!FilePrefix!=1
  9.     )   
  10. ))>"D:\testpdf\1.txt"
复制代码
1

评分人数

我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 5# Batcher
非常感谢!!!!
试了一下,很好用。

TOP

返回列表