|
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
状态 离线
|
|
2007-10-31 23:07 |
|
|
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 |
|
|
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
状态 离线
|
|
2007-11-1 07:25 |
|
|
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 |
|
|
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 |
|
|
leo1984
初级用户
 
积分 96
发帖 43
注册 2007-10-31
状态 离线
|
『第 12 楼』:
使用 LLM 解释/回答一下
大哥,似乎是不行的
∥確實是個定數
- 也是定數
我看此迴圈似乎是找到 ∥- 這個字符對吧?
但是剛才測試沒有反應耶@@
還有大哥您還沒上班或上課嗎?
感謝熱情相助哪^^
|
|
2007-11-1 08:27 |
|
|
leo1984
初级用户
 
积分 96
发帖 43
注册 2007-10-31
状态 离线
|
|
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 |
|
|
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 |
|