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

[文件操作] [已解决]批处理怎样列出指定文件夹下的文件?

我有一个很诡异的问题
  1. echo Set SelPath = CreateObject("Shell.Application").BrowseForFolder(0,"请选择文件夹",0)>%tmp%\test.vbs
  2. echo If SelPath Is Nothing Then WScript.Quit>>%tmp%\test.vbs
  3. echo TreePath = SelPath.self.Path ^& "\">>%tmp%\test.vbs
  4. echo WScript.echo TreePath>>%tmp%\test.vbs
  5. For /F "delims=#" %%i  in ('CScript //nologo %tmp%\test.vbs') Do Set Var=%%i
  6. if exist %tmp%\list.txt del %tmp%\list.txt /q
  7. :input11
  8. set input=%Var%
  9. set "input=%input:"=%"
  10. if "%input%"==":" goto input11
  11. if not exist "%input%" goto input11
  12. for %%i in ("%input%") do if /i "%%~di"==%%i goto input11
  13. pushd %cd%
  14. cd /d "%input%">nul 2>nul || exit
  15. set cur_dir=%cd%
  16. popd
  17. for /f "delims=" %%i in ('dir /b /a-d /s /os "%input%"') do echo %%~dpnxi>>%tmp%\list.txt
  18. if not exist %tmp%\list.txt goto no_file11
  19. start /w %tmp%\list.txt
复制代码
可以列出你选择的文件夹下的所有文件名,但是我不想列出子文件夹的文件名,所以删除了/s时,返回的路径是错误的,为什么会这样?应该怎样修改?

[ 本帖最后由 Wingl83 于 2010-10-21 20:47 编辑 ]
1

评分人数

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

我是菜菜

/s显示指定目录和所有子目录中的文件,去掉的话,则将路径写为当前目录,所以肯定是不可以去掉的
应该是通过其他方法修改吧,等待高手。。。
我想楼主的技术要比我高多了,楼主自己想出答案了,不用忘记给出来啊

TOP

For /F "delims=#" %%i in ('CScript //nologo %tmp%\test.vbs') Do Set Var=%%~i
为什么要用delims=#?

TOP

  1. @echo off
  2. rem vbs选择文件夹对话框
  3. echo Set SelPath = CreateObject("Shell.Application").BrowseForFolder(0,"请选择文件夹",0)>"%tmp%"\test.vbs
  4. echo If SelPath Is Nothing Then WScript.Quit>>"%tmp%"\test.vbs
  5. echo TreePath = SelPath.self.Path ^& "\">>"%tmp%"\test.vbs
  6. echo WScript.echo TreePath>>"%tmp%"\test.vbs
  7. :input11
  8. rem 不允许所选目录为根目录?
  9. For /F "delims=" %%i in ('CScript //nologo "%tmp%"\test.vbs') Do (
  10.     if /i "%%~dpi"=="%%~fi" (echo 所选目录不能为根目录& goto input11)
  11.     Set Var=%%~i
  12. )
  13. if exist "%tmp%"\list.txt del "%tmp%"\list.txt /a/f/q
  14. pushd "%Var%"
  15. for /f "delims=" %%i in ('dir /b /a-d /os "%input%"') do echo %%~fi>>"%tmp%"\list.txt
  16. popd
  17. if not exist "%tmp%"\list.txt goto no_file11
  18. start "" /w "%tmp%"\list.txt
  19. :no_file11
  20. rem ...
  21. pause
复制代码
3

评分人数

TOP

  1. for %%i in ("%input%") do if /i "%%~di"==%%i goto input
复制代码
是什么意思?

TOP

明白了,比较输入的是不是根目录。

TOP

返回列表