求一个批处理,可以将一个文件夹里的所有TXT文档,按标题名称由小到大,按顺序排列出来。
@echooffsetlocalenabledelayedexpansionfor%%ain("C:\test\*.*")do(for/f"skip=1delims=:"...
@echo off
setlocal enabledelayedexpansion
for %%a in ("C:\test\*.*") do (
for /f "skip=1 delims=:" %%b in ('^(echo "%%~nxa"^&echo.^)^|findstr /o ".*"') do set /a length=%%b-5
if !length! lss 10 (
set .00!length!%%~nxa=%%~nxa
) else if !length! lss 100 (
set .0!length!%%~nxa=%%~nxa
) else (
set .!length!%%~nxa=%%~nxa
)
)
for /f "tokens=2 delims==" %%a in ('set .') do echo %%a>>C:\result.txt
这段代码只能输出目录,不能起到真正的排列作用,求高手修改下。 展开
setlocal enabledelayedexpansion
for %%a in ("C:\test\*.*") do (
for /f "skip=1 delims=:" %%b in ('^(echo "%%~nxa"^&echo.^)^|findstr /o ".*"') do set /a length=%%b-5
if !length! lss 10 (
set .00!length!%%~nxa=%%~nxa
) else if !length! lss 100 (
set .0!length!%%~nxa=%%~nxa
) else (
set .!length!%%~nxa=%%~nxa
)
)
for /f "tokens=2 delims==" %%a in ('set .') do echo %%a>>C:\result.txt
这段代码只能输出目录,不能起到真正的排列作用,求高手修改下。 展开
展开全部
如果是按大小排序,直接用下面语句就可以
dir C:\test\*.txt /os /b>C:\result.txt
dir C:\test\*.txt /os /b>C:\result.txt
更多追问追答
追问
需要输出的不是记录 而是实实在在的把文件内的所有文件按标题长短排列,谢谢!
追答
批处理不能直接对视窗文件夹内的文件实现排序。你的意思是按照标题字数的长短排序?那只能是新建一个文件夹,把你提问贴出的代码最后面后面加上一段
for / "tokens=* delims=" %%a in (C:\result.txt) do move "%%~fa" 新文件夹路径
这个思路是先用代码把文件名按长短排序输出到一个文本,然后再用 for 语句从第一个开始,逐条移动到新文件夹,先移动过去的文件就在最上面。没有做任何其它操作的情况下,新文件夹内的文件顺序就是按文件名长短排序下来的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
最后一行for /f "tokens=2 delims==" %%a in ('set .') do echo %%a>>C:\result.txt
改成
for /f "tokens=2 delims==" %%a in ('set .') do (
type %%a>temp.tmp
move /y temp.tmp %%a
ping -n 1 127.1>nul)
dir/b/od
pause
改成
for /f "tokens=2 delims==" %%a in ('set .') do (
type %%a>temp.tmp
move /y temp.tmp %%a
ping -n 1 127.1>nul)
dir/b/od
pause
更多追问追答
追问
文件夹内有如下文件排列顺序是
小汽车分区五.txt
地面分割隔离带.txt
文本1号.txt
笔记本二类.txt
想变成:
文本1号.txt
笔记本二类.txt
小汽车分区五.txt
地面分割隔离带.txt
-------------------按标题的长短排列。上面的代码貌似不行。
追答
这个代码测试过了
@echo off
setlocal enabledelayedexpansion
pushd r:\
for %%a in (*.txt) do (
for /f "skip=1 delims=:" %%b in ('^(echo "%%~nxa"^&echo.^)^|findstr /o ".*"') do set /a length=%%b-5
set length=00!length!
set .!length:~-3!%%~nxa=%%~nxa
)
for /f "tokens=2 delims==" %%a in ('set .') do (
type %%a>temp.tmp
move /y temp.tmp %%a
ping -n 3 127.1>nul)
dir/b/od/a-d *.txt
echo.&pause
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询