
如何使用 Windows 命令列執行以下操作?
C:\Users\My Computer\SkyDrive\WORK ORDERS\Subdivision\Sec. 1\12345678_123 LUMINAIRE LN.pdf
becomes
WORK ORDERS\Subdivision\Sec. 1\12345678_123 LUMINAIRE LN.pdf
我對linux比較熟悉,我使用以下指令
cat wo.txt2 | grep "WORK\|pdf|" | sed 's/^.*WORK/WORK/' >> wo.txt
我的文字檔案大約有 17k 行
答案1
使用純批次:
@echo off
setlocal disableDelayeExpansion
set "input=wo.txt2"
set "output=wo.txt"
>"%output%" (
for /f "delims=" %%A in ('findstr /n "^" "%input%"') do (
set "ln=%%A"
setlocal enableDelayedExpansion
set "ln=!ln:*:=!"
if defined ln set "ln=!ln:*WORK=WORK!"
(echo(!ln!)
endlocal
)
)
請注意,搜尋 WORK 不區分大小寫。
FINDSTR 用於在每行前面加上行號,後面跟著冒號,以保留空白行。
延遲擴充在循環內開啟和關閉,以便保留!
來源檔案中可能存在的任何內容。
一個更簡單的解決方案是使用我的JREPL.BAT 正規表示式文字處理公用程式- 一個基於純腳本的實用程式(混合 JScript/批次),可在 XP 及以上版本的任何 Windows 電腦上本機執行。
從命令列:
jrepl "^.*WORK" "WORK" /f "wo.txt2" /o "wo.txt"
如果在批次腳本中使用該指令,則必須使用 CALL JREPL。
答案2
使用記事本++,開啟文件,按alt鍵並用滑鼠選擇不需要的文字「列」。當您按下 Alt 鍵時,您將保持列模式。釋放 alt 鍵並按 del。如果所有行都有相同數量的要刪除的字符,則此操作有效。
答案3
看一下像這個例子這樣的字串函數:
設定 str=戴帽子的貓 迴聲.%str% 設定 str=%str:teh=the% 迴聲.%str%
您基本上想C:\Users\My Computer\SkyDrive\
用空白替換。
以下是您可以使用的字串函數的清單:http://www.dostips.com/DtTipsStringManipulation.php#Snippets.MidString