|  | 
 
| 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 offfor /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 offfor %%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 offsetlocal 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 enabledelayedexpansionfor /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 offfor /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 |  |