Wie erstelle ich ein "Droplet" -Skript in Win7, das eine Notepad ++ - Task für eine CSV-Datei ausführt?

776
Myles

Ich habe kürzlich eine Frage dazu gestellt, wie Sie eine ordentliche kleine "Suchen & Ersetzen" -Aufgabe in meinen CSV-Mediendatenbankdateien ausführen können (eine Aufgabe, die ich täglich bei der Arbeit erledigen muss). Die Frage wurde hier beantwortet , wenn sich jemand für die Details interessiert.

Ich möchte nun in der Lage sein, meine CSV-Datei einfach auf ein Droplet auf dem Desktop zu ziehen, das die Aufgabe Notepad ++ suchen und ersetzen schnell und einfach ausführt, sodass ich diese Aufgabe an junge Mitarbeiter delegieren kann, wenn ich gerade bin Weg.

Frage:

Wie erstelle ich in Windows 7 ein Droplet, das den folgenden Befehl zum Suchen und Ersetzen für jede CSV-Datei ausführt, die darauf abgelegt wurde?

enter image description here

Text:

Finde was:

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

Ersetzen mit:

$1_$2, 

Check: Umwickeln

Überprüfen Sie: Regulärer Ausdruck

Run: Alle ersetzen

Ich stelle mir vor, dass dies ein Batch-Skript (oder ein beliebiges Skript) sein könnte, das meine CSV-Datei als Eingabedatei erhält, indem es einfach per Drag & Drop auf das Skript gezogen wird.

0
Was genau ist ein "Tröpfchen"? Ist es das Gleiche wie eine Verknüpfung? Berend vor 6 Jahren 0
Hallo, ich beziehe mich auf ein Skript, das die Eingabedatei durch Ziehen und Ablegen meiner CSV-Datei erhalten kann. Ich denke, dies könnte ein Batch-Skript sein, das die Datei "% ~ 1" empfängt und in Notepad ++ geöffnet wird, um den Befehl auszuführen, den ich angefordert habe. Allerdings bin ich in diesem Bereich wirklich nicht so gut informiert, dass er weiß, was das Beste ist hier ist? Ich werde meine Frage weiter klären. Danke im Voraus. Myles vor 6 Jahren 0
Ich verstehe es. Soweit ich weiß, verfügt Notepad ++ nicht über eine solche Option (http://docs.notepad-plus-plus.org/index.php/Command_Line_Switches), daher müssen Sie möglicherweise andere Tools wie AutoIt oder eine Windows-Version von verwenden sed. Ich bin kein Experte für beides. Berend vor 6 Jahren 0
Ich bin offen für alle Vorschläge. Danke an alle für alle Beiträge dazu! Myles vor 6 Jahren 0
Ich weiß nicht, ob die Notepad ++ - Funktion "Suchen und Ersetzen" von der Befehlszeile aus aufgerufen werden kann, aber ich habe aufgezeichnet, was ich als Makro in Notepad ++ machen muss. Ich bin mir nicht sicher, ob diese Makros stattdessen in der Befehlszeile aufgerufen werden können. Myles vor 6 Jahren 0
Es gibt ein Plugin namens NppExec, mit dem Sie Skripts mithilfe des Menüs "Ausführen" (F5) in Notepad ++ ausführen können. Ist dies jedoch in Win 7 CMD in irgendeiner Weise verwendbar, um das zu tun, was ich tun muss? Myles vor 6 Jahren 0

1 Antwort auf die Frage

1
LotPings

Windows 7 wird mit PowerShell v2 geliefert, das reguläre Ausdrücke mit negativen Hintergründen unterstützt.

Wenn ich Ihr RegEx richtig interpretiere, möchten Sie die zwei Ziffern, 99_die das zweite Feld vorangehen, auch auf das dritte Feld anwenden, vorausgesetzt, es gibt noch keine _99Nummer. Und lassen Sie die anderen Zeilen / den Rest der Zeile so wie sie sind.

Eine Batchdatei, die als Ablageziel dient (und auch mehrere Dateien verarbeitet):

:: 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 

file.csv vor

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

und nach dem Fallenlassen der obigen Charge.

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

Die Originaldatei wird mit der zusätzlichen Erweiterung gespeichert .bak

Hallo LotPings, ich kopiere einfach den eingefügten Code und speichere es als Batch-Skript. Wenn ich versuche, die csv-Datei per Drag & Drop zu ziehen, wird ein cmd-Fenster geöffnet und das folgende Wort wiederholt: 'Ein doppelter Dateiname existiert oder die Datei kann nicht gefunden werden'. Vielen Dank im Voraus für Ihre Hilfe! Myles vor 6 Jahren 0
Vielleicht kann die geänderte oder ursprüngliche Datei mit '_ORIGINAL' oder '_MODIFIED' gespeichert werden? Sie sind sich nicht sicher, wie Sie das Skript ändern können. Myles vor 6 Jahren 0
Entschuldigung, es fehlt eine Verschiebung als vorletzte Zeile, korrigiert. LotPings vor 6 Jahren 1
Fügte den "_Original" -Anhang zum Dateinamen ein LotPings vor 6 Jahren 1
Das scheint beim Ändern der Datenbankdatei zu funktionieren. Ich musste die Datei jedoch auf den Desktop kopieren, da das Befehlsfenster 'UNC-Pfade nicht unterstützt' anzeigt. Der Ort, an dem alle CSVs gespeichert sind, ist ein Netzwerkstandort. Irgendwie um das herum? Ich bin nicht zu aufgeregt, wenn es zu viel Problembehandlung ist. Myles vor 6 Jahren 0
Eigentlich seltsam, ich habe es sein Ding gelassen und obwohl es mir diese Nachricht über die UNC-Pfade gab, wurde immer noch eine CSV-Datei (derzeit 0 kb) erstellt und scheint etwas zu tun. Vielleicht schafft es es immer noch. Ich werde es Ihnen bald genug mitteilen. Myles vor 6 Jahren 0
Das hat funktioniert! Ich werde noch ein paar Tests mit einigen weiteren Datenbankdateien durchführen, aber das scheint bisher alles funktioniert zu haben. Sieht so aus, als würde ich das schon bald als beantwortet markieren! Danke, LotPings! Myles vor 6 Jahren 0