如何使用 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/batch),可以在 XP 及以上版本的任何 Windows 机器上本地运行。
从命令行:
jrepl "^.*WORK" "WORK" /f "wo.txt2" /o "wo.txt"
如果在批处理脚本中使用该命令,则必须使用 CALL JREPL。
答案2
使用 notepad++,打开文件,按下 alt 键,然后用鼠标选择您不想要的文本“列”。按下 alt 键时,您将处于列模式。松开 alt 键并按下 del。如果所有行都有相同数量的字符需要删除,则此方法有效。
答案3
看一下类似以下示例的字符串函数:
设置 str=teh cat in teh hat 回显。%str% 设置 str=%str:teh=the% 回显。%str%
您基本上想要C:\Users\My Computer\SkyDrive\
用空白来替换。
以下是您可以使用的字符串函数列表:http://www.dostips.com/DtTipsStringManipulation.php#Snippets.MidString