标题: [文件操作] 让 dir 按指定方式来输出内容 [打印本页]
作者: ganjie 时间: 2008-12-31 14:23 标题: 让 dir 按指定方式来输出内容
某文件夹下若干个文件,例如有A至E 5个文件,按名称排序后读取文件名,把它们放入文本中,按文件名保存,如A就保存为A.txt,同理B就是B.txt,A.txt是第一个文件,内容为 <var>A</var> <var>B</var> <var>C</var>
B.txt 内容如下
<var>A</var> <var>B</var> <var>C</var>
C.txt 内容如下
<var>B</var> <var>C</var> <var>D</var>
D.txt 内容如下
<var>C</var> <var>D</var> <var>E</var>
E.txt 内容如下
<var>C</var> <var>D</var> <var>E</var>
请注意看一下蓝色的部分,除了第一个和最后一个外,都是文本文件名的在中间,左边为按名称排序后的上一个,右边为按名称排序后的下一个,除第一个与最后一个外,如何才能实现这种效果,求高手帮编个批处理,谢谢!
弱弱再问几个dir的问题,望高手不厌其烦的指教一下!
某文件夹下目录AA、BB两个文件夹,每个目录里有5个文件和一个aa的文件夹,求如何才能使dir只显示AA、BB下的文件,而不用显示aa下的文件,问如何才能使dir只显示第一层子目录的文件,而其它层的子目录不用显示?
某文件夹下有若干个文件,用dir和echo时就显示全部的文件名了,但偶想按名称排序后只显示前面5个或3个文件的文件名,其余不显示,dir如何表达?
还有一个数字的排序,如文件名:1、01、001、2、02、002、3、03、003,想用dir使之排序为:1、2、3、01、02、03、001、002、003,问dir如何才得这种排序?
作者: terse 时间: 2008-12-31 19:52
- @echo off&setlocal enabledelayedexpansion
- for /f "delims=" %%i in ('dir /b /a-d *.*^|find /i /v "%~nx0"') do (
- set str2=!str1!
- set str1=!var!
- set var=%%~ni
- if defined str2 (
- if not defined var1 (
- set "var1=!str2!"
- >"!str2!.txt" echo ^^^<var^^^>!str2!^^^</var^^^> ^^^<var^^^>!str1!^^^</var^^^> ^^^<var^^^>%%~ni^^^</var^^^>
- ) else (
- >"!str2!.txt" echo ^^^<var^^^>!var1!^^^</var^^^> ^^^<var^^^>!str2!^^^</var^^^> ^^^<var^^^>!str1!^^^</var^^^>
- set "var1=!str2!"
- set "var2=!var1!"
- )))
- >"!str1!.txt" echo ^^^<var^^^>!str2!^^^</var^^^> ^^^<var^^^>!str1!^^^</var^^^> ^^^<var^^^>!var!^^^</var^^^>
- >"!var!.txt" echo ^^^<var^^^>!str2!^^^</var^^^> ^^^<var^^^>!str1!^^^</var^^^> ^^^<var^^^>!var!^^^</var^^^>
- pause
复制代码
dir的问题- for /f "delims=" %%i in ('dir /b /a-d') do (
- set/a n+=1
- echo %%i
- if !n! gtr 5 goto :eof
- )
复制代码
排序- @echo off&setlocal enabledelayedexpansion
- for /f "delims=" %%i in ('dir /b /a-d') do (
- set str=//////////%%i
- set .!str:~-10! !random!=%%i
- )
- for /f "tokens=2 delims==" %%i in ('set .') do echo %%i
- pause
复制代码
作者: ganjie 时间: 2008-12-31 20:28
- for /f "delims=" %%i in ('dir /b /a-d') do (
- set/a n+=1
- echo %%i
- if !n! gtr 5 goto :eof
- )
复制代码
这个不能显示前5个吧!其它两个代码测试成功了,还有dir问题的第一问:某文件夹下目录AA、BB两个文件夹,每个目录里有5个文件和一个aa的文件夹,求如何才能使dir只显示AA、BB下的文件,而不用显示aa下的文件,问如何才能使dir只显示第一层子目录的文件,而其它层的子目录不用显示?
这条也请大大帮忙一下,谢谢了!
作者: terse 时间: 2008-12-31 23:00
原帖由 ganjie 于 2008-12-31 20:28 发表
for /f ...
... goto :eof
这个不能显示前5个吧!其它两个代码测试成功了,还有dir问题的第一问:某文件夹下目录AA、BB两个文件夹,每个目录 ...
- @echo off&setLocal enabLedeLayedexpansion
- for /f "delims=" %%i in ('dir /b /a-d') do (
- set/a n+=1
- echo %%i
- if !n! geq 5 goto lp
- )
- :lp
- pause
复制代码
另外是否这个意图?
- @echo off
- set ph=c:test\某文件夹\
- for /f "delims=" %%i in ('dir /b /ad "%ph%\"') do dir /b /a-d "%ph%%%i\*.*"
- pause
复制代码
作者: ganjie 时间: 2009-1-1 08:01
经过测试代码均成功,谢谢了!-
- @echo off&setlocal enabledelayedexpansion
- for /f "delims=" %%i in ('dir /b /a-d *.*^|find /i /v "%~nx0"') do (
- set str2=!str1!
- set str1=!var!
- set var=%%~ni
- if defined str2 (
- if not defined var1 (
- set "var1=!str2!"
- >"!str2!.txt" echo ^^^<var^^^>!str2!^^^</var^^^> ^^^<var^^^>!str1!^^^</var^^^> ^^^<var^^^>%%~ni^^^</var^^^>
- ) else (
- >"!str2!.txt" echo ^^^<var^^^>!var1!^^^</var^^^> ^^^<var^^^>!str2!^^^</var^^^> ^^^<var^^^>!str1!^^^</var^^^>
- set "var1=!str2!"
- set "var2=!var1!"
- )))
- >"!str1!.txt" echo ^^^<var^^^>!str2!^^^</var^^^> ^^^<var^^^>!str1!^^^</var^^^> ^^^<var^^^>!var!^^^</var^^^>
- >"!var!.txt" echo ^^^<var^^^>!str2!^^^</var^^^> ^^^<var^^^>!str1!^^^</var^^^> ^^^<var^^^>!var!^^^</var^^^>
- pause
复制代码
set str2=!str1!
set str1=!var!
set var=%%~ni
这三个,为什么不能写成set var=%%~ni set str1=!var! set str2=!str1! 这样的倒序,想了解一下您编程的算法!还有%~nx0 为什么不写成%%~nx0 这个表示什么意思。
[ 本帖最后由 ganjie 于 2009-1-1 08:08 编辑 ]
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |