标题: [文件操作] [已解决]BAT批处理获取畸形目录的短文件名 [打印本页]
作者: wwjpl 时间: 2014-1-3 08:44 标题: [已解决]BAT批处理获取畸形目录的短文件名
我知道在CMD下可以用DIR /X获取包括畸形目录的短文件夹名。
那么如何用批处理获取任意不超过6个字符的畸形目录的短文件夹名(拖拽显示),并且输出到文本呢,例如A..\,或者12..\
希望得到论坛高手的帮助,谢谢
作者: apang 时间: 2014-1-3 18:11
这样可以不?- @echo off
- for /f "tokens=4*" %%a in ('dir /ad /x') do (
- if /i "%%b"=="A.." echo,%%a
- )
- pause
复制代码
作者: wwjpl 时间: 2014-1-3 22:45
本帖最后由 wwjpl 于 2014-1-3 22:46 编辑
回复 2# apang
感谢你的帮助,这样不行,把文件夹拖到批处理图标上没反应,双击也没反应,只出现了“按任意建继续”的提示
不论是我建的A..文件夹还是其他畸形文件夹都没反应,我把“echo,%%a”中间的“逗号”改成空格也没反应。
希望你再帮忙看看,最好是支持拖拽的
顺便说一下 我是XP系统
作者: apang 时间: 2014-1-4 11:43
- @echo off
- if "%~1"=="" echo,把畸形目录拖拽到bat上&pause&exit /b
- for /f "tokens=4*" %%a in ('dir /ad /x "%~1\..\"') do (
- for %%c in ("%~1$") do if /i "%%b$"=="%%~nxc" echo,%%a
- )
- pause
复制代码
作者: wwjpl 时间: 2014-1-4 13:02
回复 4# apang
谢谢你的帮助,这次可以了。
作者: oiw 时间: 2014-10-14 16:10
回复 4# apang
您好,我的系統是Windows7,試了上面您寫的兩份指令,拖曳畸形目錄後,執行結果都只有顯示「請按任意鍵繼續 . . .」而已,依然沒有得到它的短目錄名,
請問是不是Windows7的執行結果有不一樣呢?
作者: apang 时间: 2014-10-14 18:14
回复 6# oiw
dir /ad /x
执行后第4列为短文件名,第5列为长文件名,看看你的结果是这样不
作者: oiw 时间: 2014-10-14 21:57
回复 7# apang
有,第4列顯示短文件名、第5列顯示長文件名
這是拖曳的過程
只有顯示「請按任意鍵繼續 . . .」
代碼沒有變動到
您知道問題是出在什麼地方嗎?
作者: apang 时间: 2014-10-14 23:08
回复 8# oiw
d:\Test>dir /ad /x
驱动器 D 中的卷是 PROGRAM
卷的序列号是 CB34-5A7B
d:\Test 的目录
2013/10/29 21:29 <DIR> .
2013/10/29 21:29 <DIR> ..
2013/01/15 19:23 <DIR> abc
2014/10/14 22:43 <DIR> TEST~1 Test..
2014/10/14 22:46 <DIR> TEST1~1 Test 1..
0 个文件 0 字节
5 个目录 19,410,436,096 可用字节
d:\Test>
你的时间格式多出上午和下午,短文件名位于第5列
解决办法:
1.把代码中的 tokens=4* 改成 tokens=5*
2.下面的代码,多用一层for,但应该可以两者兼顾:- @echo off
- if "%~1"=="" echo,把畸形目录拖拽到bat上&pause&exit /b
- for /f "tokens=2delims=>" %%i in ('dir /ad /x "%~1\..\"') do (
- for /f "tokens=1*" %%a in ("%%i") do (
- for %%c in ("%~1$") do if /i "%%b$"=="%%~nxc" echo,%%a
- )
- )
- pause
复制代码
作者: oiw 时间: 2014-10-15 10:46
回复 9# apang
謝謝你,成功取得目錄名稱,這下可以進行許多細節的操作了 ^^
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |