中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]請問大哥們我寫的文本替換更名哪裡有錯?(附圖)
作者:
标题: [求助]請問大哥們我寫的文本替換更名哪裡有錯?(附圖) 上一主题 | 下一主题
leo1984
初级用户





积分 96
发帖 43
注册 2007-10-31
状态 离线
『楼 主』:  [求助]請問大哥們我寫的文本替換更名哪裡有錯?(附圖) 使用 LLM 解释/回答一下

我是新手,剛開始嘗試寫^^"
我有一個目錄的文本,是論壇程序的數據文本


文本以這個作為分隔符

文本內容如下:
流浪漢∥∥搜尋日本AV女優圖片的利器∥http://image.baidu.jp/∥59.113.162.145∥2007/03/21 13:37∥54188@IMYF.COM∥

我想要把每個文本一定要是第一行裡,的2007/03/21 13:37時間的部份用來更改文本檔案名稱

如下圖:


可是我的寫法卻無法完成,請問是哪個地方寫錯了嗎?
麻煩大哥們指導一下,十分感謝^^


@echo off
for /f "delims=" %%f in ('dir /on/b "*.txt"') do (
for /f "tokens=1,2,3,4,5,6,7 delims=∥" %%i in (%%f) do echo %%i∥%%j∥%%k∥%%m∥%%o∥%%n∥%%l∥
&setlocal enabledelayedexpansion
for /f "delims=." %%i in ('dir /on/b *.txt') do (
ren "%%i".txt
)
pause


Last edited by leo1984 on 2007-10-31 at 10:53 PM ]


2007-10-31 22:52
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
1112yuhua
初级用户





积分 106
发帖 44
注册 2007-6-1
状态 离线
『第 2 楼』:   使用 LLM 解释/回答一下

看到你图片里面是“||”而不是“//"


2007-10-31 23:07
查看资料  发送邮件  发短消息  网志  OICQ (463675828)  编辑帖子  回复  引用回复
abcd
银牌会员





积分 1436
发帖 739
注册 2007-10-11
状态 离线
『第 3 楼』:   使用 LLM 解释/回答一下

@echo off
for %%i in (*.txt) do (
for /f "tokens=*" %%a in ('sed "1{s#^.*\(\{4\}/\{2\}/\{2\}\ \{1,\}:\{1,\}\).*$#\1#;q}" "%%i"^|sed "s###g"') do (
ren "%%i" "%%a%%~xi"
)
)


2007-10-31 23:16
查看资料  发短消息  网志  OICQ (470237592)  编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 4 楼』:   使用 LLM 解释/回答一下

没有太清楚你的意思:你的文本内容如你图片的话 应该是||而不是∥ 这样试试如何?

@echo off &setlocal enabledelayedexpansion
for /f "delims=" %%f in ('dir /on/b "*.txt"') do (
for /f "tokens=6 delims=^|^|" %%i in (%%f) do (
if not defined aaa set aaa=%%i.txt
set aaa=!aaa:/=!
set aaa=!aaa::=:!
set aaa=!aaa: =-!
)
ren %%f !aaa!
)
pause


Last edited by terse on 2007-11-1 at 02:00 AM ]


2007-11-1 01:43
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
zh159
金牌会员




积分 3687
发帖 1467
注册 2005-8-8
状态 离线
『第 5 楼』:   使用 LLM 解释/回答一下

修改一下楼上的(如果是||,将∥改为^|即可,tokens=5根据所需字符位置确定):建议先测试正确再实际操作
@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%f in ('dir /on/b "*.txt"') do (
set n=
for /f "tokens=5 delims=∥" %%i in (%%f) do (
set /a n+=1
if !n! == 1 (
set str=%%i
set str=!str:/=!
set str=!str::=!
ren "%%f" "!str!.txt"
)
)
)
pause


Last edited by zh159 on 2007-11-1 at 02:08 AM ]




2007-11-1 02:06
查看资料  发短消息  网志   编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 6 楼』:   使用 LLM 解释/回答一下

重新改了一下 我这里是以贴出的试的 是tokens=6 当然这个是无关的 关键能处理就好。前贴没看是第一排的
:流浪漢|| ||搜尋日本AV女優圖片的利器||http://image.baidu.jp/||59.113.162.145||2007/03/20 13:37||54188@IMYF.COM||


@echo off&setlocal enabledelayedexpansion
for %%i in (*.txt) do (
set i=%%i
call :rena
)
pause
goto :eof
:rena
for /f "tokens=6 delims=^|^|" %%i in ('more ^< "%i%"') do (
if not defined line set "line=%%i"
set line=!line:/=!
set line=!line::=!
)
ren "!i!" "!line!.txt"
set line=


Last edited by terse on 2007-11-1 at 02:59 AM ]


2007-11-1 02:30
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
leo1984
初级用户





积分 96
发帖 43
注册 2007-10-31
状态 离线
『第 7 楼』:   使用 LLM 解释/回答一下

看來要玩這東西很需要邏輯啊,每位大哥的寫法都不一樣,但都可以成功
我還要多玩玩,不然簡直來這裡開玩笑哩@@

1112yuhua
沒錯的^^

abcd
哈哈,老大哥果然厲害,一測試就成功了,來台灣一定要給我請客啊^^

terse
您的兩次指令都可以成功,只要把參數改符合庵要的即可,第一次的我有測試,但是檔名沒有去除掉一些符號,會變成2007/03/21 13:37.txt
十分感謝大哥^^
@echo off &setlocal enabledelayedexpansion
for /f "delims=" %%f in ('dir /on/b "*.txt"') do (
for /f "tokens=5 delims=" %%i in (%%f) do (
if not defined aaa set aaa=%%i.txt
set aaa=!aaa:/=!
set aaa=!aaa::=:!
set aaa=!aaa: =-!
)
ren %%f !aaa!
)
pause

zh159
您寫的也是每一次都成功,完全沒問題啊^^

只是這串字符是什麼,我研究不出來@@
set aaa=!aaa:/=!
set aaa=!aaa::=:!
set aaa=!aaa: =-!

Last edited by leo1984 on 2007-11-1 at 05:41 AM ]


2007-11-1 05:31
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
abcd
银牌会员





积分 1436
发帖 739
注册 2007-10-11
状态 离线
『第 8 楼』:   使用 LLM 解释/回答一下

∥是一个字符,不是//两个字符啦

楼主还起的真早啊


2007-11-1 07:25
查看资料  发短消息  网志  OICQ (470237592)  编辑帖子  回复  引用回复
leo1984
初级用户





积分 96
发帖 43
注册 2007-10-31
状态 离线
『第 9 楼』:   使用 LLM 解释/回答一下

哈哈~我昨晚搞網站很累
就先睡了,今天就比較早起^^

可以順便請問一下,我在更改文本檔名時
發現無法辨識 - 這個字符
所以更改完檔名後,會變成61.224.104.78 - 61.224.104.78.txt

而我不需要讓它辨識 - 這個字符
只要將61.224.104.78 - 61.224.104.78變成61.224.104.78即可

處理前:

0o0∥1∥ Vista風格語言欄&新版聲音圖示&音量控制界面∥安裝完看起來是不錯,但它是簡體字= =!!!,請問大大要如果想改回來要如何改 @0@???∥61.224.104.78 - 61.224.104.78∥2006/11/01 09:23∥zerg0517@yahoo.com.tw

處理後:

0o0∥1∥ Vista風格語言欄&新版聲音圖示&音量控制界面∥安裝完看起來是不錯,但它是簡體字= =!!!,請問大大要如果想改回來要如何改 @0@???∥61.224.104.78∥2006/11/01 09:23∥zerg0517@yahoo.com.tw

我試過再寫一個for抓取∥61.224.104.78 - 61.224.104.78
之間的字符刪除
但是都失敗,請問應該如何寫呢?

Last edited by leo1984 on 2007-11-1 at 07:43 AM ]


2007-11-1 07:40
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
abcd
银牌会员





积分 1436
发帖 739
注册 2007-10-11
状态 离线
『第 10 楼』:   使用 LLM 解释/回答一下

如果IP前的一段中,∥的個數是定的,下面的應該可以的。
for /f "tokens=1,2,3,4,5,6* delims=∥-" %%i in (test.txt) do (
echo %%i∥%%j∥%%k∥%%l∥%%m∥%%o
)


2007-11-1 08:11
查看资料  发短消息  网志  OICQ (470237592)  编辑帖子  回复  引用回复
abcd
银牌会员





积分 1436
发帖 739
注册 2007-10-11
状态 离线
『第 11 楼』:   使用 LLM 解释/回答一下

@echo off
for /f "tokens=1* delims=-" %%i in (test.txt) do (
set "str=%%j"
set "str1=%%i"
call set "str=%%str:*∥=%%"
call echo "%%str1:~0,-1%%∥%%str%%"
)
pause


针对个数不定的,不过因为字符串中有&这个特殊字符,所有输出时必须加""了。


2007-11-1 08:22
查看资料  发短消息  网志  OICQ (470237592)  编辑帖子  回复  引用回复
leo1984
初级用户





积分 96
发帖 43
注册 2007-10-31
状态 离线
『第 12 楼』:   使用 LLM 解释/回答一下

大哥,似乎是不行的
∥確實是個定數
- 也是定數

我看此迴圈似乎是找到 ∥- 這個字符對吧?
但是剛才測試沒有反應耶@@

還有大哥您還沒上班或上課嗎?
感謝熱情相助哪^^


2007-11-1 08:27
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
leo1984
初级用户





积分 96
发帖 43
注册 2007-10-31
状态 离线
『第 13 楼』:   使用 LLM 解释/回答一下

第二段您給的指令它說

這個時候不應有<

是什麼意思呢@@?


2007-11-1 08:29
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
abcd
银牌会员





积分 1436
发帖 739
注册 2007-10-11
状态 离线
『第 14 楼』:   使用 LLM 解释/回答一下

sed "s/\(\{1,3\}\.\{1,3\}\.\{1,3\}\.\{1,3\}\) - \1/\1/" test.txt


用sed快 多了


2007-11-1 08:29
查看资料  发短消息  网志  OICQ (470237592)  编辑帖子  回复  引用回复
abcd
银牌会员





积分 1436
发帖 739
注册 2007-10-11
状态 离线
『第 15 楼』:   使用 LLM 解释/回答一下

因为我是复制"0o0∥1∥ Vista風格語言欄&新版聲音圖示&音量控制界面∥安裝完看起來是不錯,但它是簡體字= =!!!,請問大大要如果想改回來要如何改 @0@???∥61.224.104.78 - 61.224.104.78∥2006/11/01 09:23∥zerg0517@yahoo.com.tw∥“这一段到记事本处理的。

每一段我都测试过,在我这是可以的。


2007-11-1 08:31
查看资料  发短消息  网志  OICQ (470237592)  编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: