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

[文本处理] 如何判断txt文本中列出的路径是文件的还是文件夹的?

本帖最后由 pcl_test 于 2016-4-7 19:47 编辑

一个文本,比如test.txt,内容如下:
需要用for判断哪些是文件哪些是目录,文件输出到11.txt中,文件夹输出到22.txt中,应该如何写?
C:\Windows\addins
C:\Windows\Application Compatibility Scripts
C:\Windows\CSC\v2.0.6\temp
C:\Windows\CSC\v2.0.6\temp\ea-{d9dd67e4-f096-11e4-96f1-e9210b24e1b2}
C:\Windows\debug\PASSWD.LOG
C:\Windows\Downloaded Program Files
C:\Windows\ehome
C:\Windows\explorer.exe
C:\Windows\Fonts\ahronbd.ttf
C:\Windows\Globalization\Sorting\SortDefault.nls
C:\Windows\Microsoft.NET\Framework\v3.0\Windows Communication Foundation\ServiceModelInstallRC.dll
C:\Windows\provisioning
C:\Windows\rescache\rc0003\ResCache.dir
C:\Windows\Resources
C:\Windows\ServiceProfiles\NetworkService\NTUSER.DAT{6cced2f1-6e01-11de-8bed-001e0bcd1824}.TM.blf
C:\Windows\ServiceProfiles\NetworkService\NTUSER.DAT{6cced2f1-6e01-11de-8bed-001e0bcd1824}.TMContainer00000000000000000001.regtrans-ms
C:\Windows\SysMsiCache
C:\Windows\System32\7B296FB0-376B-497e-B012-9C450E1B7327-5P-1.C7483456-A289-439d-8115-601632D005A0
1

评分人数

  1. """
  2. python判断路径是目录还是文件.py
  3. http://bbs.bathome.net/thread-39957-1-1.html
  4. 2016年4月8日 03:04:00 codegay
  5. """
  6. import os
  7. files=[r for r in open("test.txt") if os.path.isfile(r.strip())]
  8. dirs=[r for r in open("test.txt") if os.path.isdir(r.strip())]
  9. with open("11.txt","w+") as f:
  10.     f.writelines(files)
  11. with open("22.txt","w+") as f:
  12.     f.writelines(dirs)
复制代码
2

评分人数

去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

回复 12# freesoft00


    已修改

TOP

回复 11# CrLf


    可以了。但是还是有点问题。
  1. C:\Windows\AppPatch\drvmain.sdb,C:\Windows\AppPatch\sysmain.sdb,C:\Windows\bootstat.dat,C:\Windows\Branding\Basebrd\basebrd.dll,
复制代码
内容变成以逗号分隔的一行文本了。

TOP

回复 10# freesoft00


    \ 改 \\

TOP

回复 8# CrLf
也不行呀,test.txt我修改为了我的实际路径的文件。
  1. @mshta http://bathome.net/s/hta/ type('J:\SkyIAR_v2.72\ff.txt').split(/\r\n/).files() >J:\SkyIAR_v2.72\11.txt
  2. @mshta http://bathome.net/s/hta/ type('J:\SkyIAR_v2.72\ff.txt').split(/\r\n/).folders() >J:\SkyIAR_v2.72\22.txt
复制代码
执行胡得到的是两个空文件,没有内容。
而且大招必须要联网才可以,可否有离线就可以处理的?
谢谢!

TOP

本帖最后由 freesoft00 于 2016-4-7 22:14 编辑

回复 5# happy886rr
谢谢!不过和上面的执行结果差不多,也是文件txt中包括目录。
处理的就是系统目录的内容:
只要不是系统目录就好说,听说Win10新版原生支持Linux Bash命令行

TOP

本帖最后由 CrLf 于 2016-4-8 01:57 编辑

逼我放大招
  1. @mshta http://bathome.net/s/hta/?string type(""J:\SkyIAR_v2.72\ff.txt"").split(/\r\n/).files() >11.txt
  2. @mshta http://bathome.net/s/hta/?string type(""J:\SkyIAR_v2.72\ff.txt"").split(/\r\n/).folders() >22.txt
复制代码
1

评分人数

TOP

回复 6# CrLf
只要不是系统目录就好说,听说Win10新版原生支持Linux Bash命令行。

TOP

回复 5# happy886rr


    没权限也会 cd 失败

TOP

  1. @echo off&for /f "delims=" %%a in (test.txt) do (CD "%%a\"&&echo %%a>>22.txt||echo %%a>>11.txt)
复制代码
回复 4# freesoft00

TOP

回复 2# CrLf
感谢!
22.txt不正确,文件和目录都有,而11.txt正确只有目录
例如22.txt的内容如下:
  1. C:\Windows\ADAM
  2. C:\Windows\Application Compatibility Scripts
  3. C:\Windows\bootstat.dat
  4. C:\Windows\Branding\Basebrd\basebrd.dll
  5. C:\Windows\Cluster
  6. C:\Windows\CSC\v2.0.6\namespace
  7. C:\Windows\CSC\v2.0.6\pq
  8. C:\Windows\CSC\v2.0.6\sm
  9. C:\Windows\CSC\v2.0.6\temp
  10. C:\Windows\CSC\v2.0.6\temp\ea-{d9dd67e4-f096-11e4-96f1-e9210b24e1b2}
  11. C:\Windows\debug\PASSWD.LOG
  12. C:\Windows\ehome
  13. C:\Windows\explorer.exe
  14. C:\Windows\idmu
  15. C:\Windows\MSAgent
  16. C:\Windows\nap
复制代码

TOP

julia内置函数,isfile isdir

python麻烦点
import os
os.path.isfile
os.path.isdir

都很直观。
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

  1. @echo off
  2. for /f "tokens=*" %%a in (test.txt) do (
  3.    if exist %%a\nul (echo %%a>>11.txt) else echo %%a>>22.txt
  4. )
复制代码
1

评分人数

TOP

返回列表