如何在 Win7 中创建“droplet”脚本,在 CSV 文件上运行 Notepad++ 任务

如何在 Win7 中创建“droplet”脚本,在 CSV 文件上运行 Notepad++ 任务

我最近问了一个问题,关于如何在我的 CSV 媒体数据库文件上执行一个简洁的“查找和替换”任务(这是我每天在工作中必须执行的任务)。这个问题得到了回答这里如果有人对细节感兴趣的话。

我现在希望能够简单地将我的 CSV 文件拖放到桌面上的一个 droplet 上,以便快速轻松地执行“查找和替换 Notepad++”任务,这样我就可以在我不在的时候将此任务委托给更多的初级员工。

问题:

如何在 Win 7 中创建一个 droplet,对放入其中的任何 CSV 文件运行以下“查找和替换”命令?

在此处输入图片描述

文本:

找什么:

^([^,]*,(\d\d)_[^,]*,[^,]*)(?<!_\d\d),

用。。。来代替:

$1_$2,

查看:环绕

查看:正则表达式

跑步:全部替换

我想象这可能是一个批处理脚本(或任何类型的脚本),只需将其拖放到脚本上即可接收我的 CSV 文件作为输入文件。

答案1

Windows 7 附带 PowerShell v2,它支持带有负面后视的正则表达式。

如果我解释你的正则表达式正确的做法是,您要将第二个字段前面的两个数字应用99_到第三个字段后面,前提是还没有数字_99。其他行/行的剩余部分保持不变。

作为拖放目标的批处理文件(也处理多个文件):

:: SO_1352996.cmd
@Echo off
:Loop
If "%~1" equ "" goto :Eof
If not exist "%~1" (shift & goto :Loop)
Ren "%~f1" "%~n1_Original%~x1"
:: Use PowerShell as a tool to do the replace.
Powershell -NoP -C "(Get-Content '%~dpn1_Original%~x1') -replace '^([^,]*,(\d\d)_[^,]*,[^,]*)(?<!_\d\d),','$1_$2,' | Set-Content '%~f1'
Shift
Goto :Loop

之前的文件.csv

test,12_blah,blubb,anything
test,34_blah,blu_34,doesn't matter
test,56_foo,bar,nevermind

并将其放到上述批次上。

test,12_blah,blubb_12,anything
test,34_blah,blu_34,doesn't matter
test,56_foo,bar_56,nevermind

原始文件以附加扩展名保存.bak

相关内容