中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-08 23:01
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 求助:自定义排序问题 查看 2,419 回复 17
楼 主 求助:自定义排序问题 发表于 2008-05-26 10:41 ·  中国 广东 深圳 宝安区 电信
中级用户
★★
积分 358
发帖 130
注册 2005-11-12 16:29
20年会员
UID 45117
状态 离线
求助:自定义排序问题
如已有排号000001-000111,输入000111,自动从000112排序
我这样写的,不行啊
set/p a=输入6位已有排号的尾号后回车 :
Setlocal EnableDelayedExpansion
for /f "tokens=1* delims=:" %%i in ('findstr/n .* 0.txt') do (
set num=%a%%%i
set num=!num:~-6!
echo.[!num!]%%j >>1.txt
)
2 发表于 2008-05-26 11:03 ·  泰国
银牌会员
★★★
永远的菜鸟
积分 1,335
发帖 574
注册 2007-11-27 12:50
18年会员
UID 103929
性别 男
来自 广西
状态 离线
看了3楼的,发现自己理解错误,删除!

[ Last edited by moniuming on 2008-5-26 at 11:20 AM ]
3 发表于 2008-05-26 11:06 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线

@echo off&Setlocal EnableDelayedExpansion
set/p a=输入3位已有排号的尾号后回车 :
for /f "delims=" %%i in (0.txt) do (
set /a a+=1
echo %%i>>1.txt
)
echo 搞定!
pause>nul


[ Last edited by zw19750516 on 2008-5-26 at 11:07 AM ]
批处理之家新域名:www.bathome.net
4 发表于 2008-05-26 11:45 ·  中国 广东 深圳 宝安区 电信
中级用户
★★
积分 358
发帖 130
注册 2005-11-12 16:29
20年会员
UID 45117
状态 离线
谢谢您的回复,如从010000排就会超出6位了
5 发表于 2008-05-26 11:55 ·  泰国
银牌会员
★★★
永远的菜鸟
积分 1,335
发帖 574
注册 2007-11-27 12:50
18年会员
UID 103929
性别 男
来自 广西
状态 离线
谢谢6楼提醒,改过来了
@echo off
set/p a=输入6位已有排号的尾号后回车 :
set a=1%a%
set /a a+=1
echo %a:~-6%>>1.txt
echo 搞定!
pause>nul


[ Last edited by moniuming on 2008-5-26 at 12:53 PM ]
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
bat-zw +1 2008-05-26 12:11
6 发表于 2008-05-26 12:07 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线
Originally posted by moniuming at 2008-5-26 11:55:
@echo off&Setlocal EnableDelayedExpansion
set/p a=输入6位已有排号的尾号后回车 :
for /f "delims=" %%i in (0.txt) do (
set a=1%%a
set /a a+=1
echo ...

set a=1%%a应该是set a=1%a%吧。
ps:set a=1%a%有创意,加分!

[ Last edited by zw19750516 on 2008-5-26 at 12:11 PM ]
批处理之家新域名:www.bathome.net
7 发表于 2008-05-26 12:50 ·  中国 广东 深圳 宝安区 电信
中级用户
★★
积分 358
发帖 130
注册 2005-11-12 16:29
20年会员
UID 45117
状态 离线
Originally posted by moniuming at 2008-5-26 11:55:
@echo off&Setlocal EnableDelayedExpansion
set/p a=输入6位已有排号的尾号后回车 :
for /f "delims=" %%i in (0.txt) do (
set a=1%a%
set /a a+=1
echo ...



谢谢您的回复, 排号只加了一次并全部用了它,如输入000111,则全部用了000112哟
8 发表于 2008-05-26 13:04 ·  泰国
银牌会员
★★★
永远的菜鸟
积分 1,335
发帖 574
注册 2007-11-27 12:50
18年会员
UID 103929
性别 男
来自 广西
状态 离线
谢谢您的回复, 排号只加了一次并全部用了它,如输入000111,则全部用了000112哟

请问LZ要一直往下排多少呢
9 发表于 2008-05-26 13:13 ·  中国 广东 深圳 宝安区 电信
中级用户
★★
积分 358
发帖 130
注册 2005-11-12 16:29
20年会员
UID 45117
状态 离线
Originally posted by moniuming at 2008-5-26 13:04:

请问LZ要一直往下排多少呢


无法固定多少,有多少行就往下排多少, 如上例应该是000112,000113
000114........., 您的却全是000112呀
10 发表于 2008-05-26 13:49 ·  泰国
银牌会员
★★★
永远的菜鸟
积分 1,335
发帖 574
注册 2007-11-27 12:50
18年会员
UID 103929
性别 男
来自 广西
状态 离线
试试这个?
@echo off
Setlocal EnableDelayedExpansion
for /f "delims=" %%i in (0.txt) do set a=1%%i
for /f "delims=" %%i in (0.txt) do (
set /a a+=1
>>1.txt echo !a:~-6!
)
pause


[ Last edited by moniuming on 2008-5-26 at 01:58 PM ]
11 发表于 2008-05-26 14:15 ·  中国 广东 深圳 宝安区 电信
中级用户
★★
积分 358
发帖 130
注册 2005-11-12 16:29
20年会员
UID 45117
状态 离线
Originally posted by moniuming at 2008-5-26 13:49:
试试这个?
@echo off
Setlocal EnableDelayedExpansion
for /f "delims=" %%i in (0.txt) do set a=1%%i
for /f "delims=" %%i in (0.txt) do (
set /a a+=1
>> ...


还是不行呀
12 发表于 2008-05-26 14:19 ·  泰国
银牌会员
★★★
永远的菜鸟
积分 1,335
发帖 574
注册 2007-11-27 12:50
18年会员
UID 103929
性别 男
来自 广西
状态 离线
我已经试过成功了呀,把你的0.txt的内容贴出来看看,如果不是一行一串数字的话是不行的
13 发表于 2008-05-26 14:48 ·  中国 广东 深圳 宝安区 电信
中级用户
★★
积分 358
发帖 130
注册 2005-11-12 16:29
20年会员
UID 45117
状态 离线
c:\BJPrinter\CNMwindows\Canon S200SP\private.ini
c:\Documents and Settings\Administrator\Application Data\combobox_u.ini
c:\Documents and Settings\Administrator\Application Data\editplus_u.ini
c:\Documents and Settings\Administrator\Application Data\setting_u.ini
c:\Documents and Settings\Administrator\Application Data\SogouPY\correction.ini
c:\Documents and Settings\Administrator\Application Data\SogouPY\env.ini
c:\Documents and Settings\Administrator\Application Data\SogouPY\MoHuYin.ini
c:\Documents and Settings\Administrator\Application Data\SogouPY\scdlist.ini
c:\Documents and Settings\Administrator\Application Data\SogouPY\Skin\skin.ini
c:\Documents and Settings\Administrator\Local Settings\Temp\Set.ini
c:\Documents and Settings\Administrator\Local Settings\Temp\SogouPinYinUpdate.ini
c:\Documents and Settings\All Users\Application Data\Microsoft\Network\Connections\Pbk\sharedaccess.ini
c:\jjbxb\default.ini
c:\jjbxb\spyb.ini
c:\jjbxb\py\config.ini
c:\jjbxb\save\jjt.ini
c:\Program Files\epson\escndv\setup\ES_uninst.ini
c:\Program Files\epson\escndv\setup\setup.ini
...............
14 发表于 2008-05-26 14:53 ·  中国 湖南 娄底 电信
银牌会员
★★★
积分 2,268
发帖 879
注册 2006-12-19 16:23
19年会员
UID 73968
性别 男
状态 离线
唉!
又见外星人 !!!
致精致简!
15 发表于 2008-05-26 15:03 ·  泰国
银牌会员
★★★
永远的菜鸟
积分 1,335
发帖 574
注册 2007-11-27 12:50
18年会员
UID 103929
性别 男
来自 广西
状态 离线
知道LZ的意思了,这个应该没问题了吧
@echo off
Setlocal EnableDelayedExpansion
type nul>1.txt
for /f "tokens=1 delims=:" %%i in ('findstr /n .* 0.txt') do set a=100000%%i
for /f "delims=" %%i in (0.txt) do (
set /a a+=1
>>1.txt echo !a:~-6! %%i
)

如果1.txt中原来就有000001-000111等内容,用下面的代码
@echo off
Setlocal EnableDelayedExpansion
set /p a=输入6位已有排号的尾号后回车 :
set b=1%a%
for /f "delims=" %%i in (0.txt) do (
set /a b+=1
>>1.txt echo !b:~-6! %%i
)


[ Last edited by moniuming on 2008-5-26 at 03:35 PM ]
论坛跳转: