Как создать скрипт '' droplet '' в Win7, который запускает задачу Notepad ++ для файла CSV

562
Myles

Недавно я задал вопрос о том, как выполнить аккуратную небольшую задачу «Найти и заменить» в моих файлах мультимедийной базы данных CSV (задача, которую я должен выполнять на работе ежедневно). На вопрос ответили здесь, если кому-то интересны детали.

Теперь я хочу иметь возможность просто перетаскивать свой CSV-файл на каплю на рабочем столе, которая быстро и легко выполняет задачу «Найти и заменить Блокнот ++», поэтому я могу делегировать эту задачу большему количеству младших сотрудников, даже когда я далеко.

Вопрос:

Как создать каплю в Win 7, которая запускает следующую команду «Найти и заменить» для любого CSV-файла, добавленного в него?

enter image description here

Текст:

Найти то, что:

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

Заменить:

$1_$2, 

Проверить: обернуть

Проверка: регулярное выражение

Выполнить: заменить все

Я представляю, что это может быть пакетный сценарий (или любой другой сценарий), который получит мой CSV-файл в качестве входного файла, просто перетащив его на сценарий.

0
Что именно представляет собой «капелька»? Это так же, как ярлык? Berend 6 лет назад 0
Привет, я имею в виду скрипт, который может получить входной файл, перетащив на него мой CSV-файл. Я думаю, что это может быть пакетный скрипт, который получит файл "% ~ 1" и откроется в Notepad ++ для запуска запрошенной команды, однако я действительно недостаточно разбираюсь в этой области, чтобы знать, что лучше всего делать здесь есть? я отредактирую свой вопрос для дальнейшего уточнения. Заранее спасибо. Myles 6 лет назад 0
Я понял Насколько я знаю, Notepad ++ не имеет такой опции (http://docs.notepad-plus-plus.org/index.php/Command_Line_Switches), поэтому вам может потребоваться использовать другие инструменты, такие как AutoIt или Windows-версию СЕПГ. Я не эксперт ни по одному из них. Berend 6 лет назад 0
Я открыт для любых предложений. Спасибо всем за вклад в это! Myles 6 лет назад 0
Я не знаю, можно ли вызывать функцию Notepad ++ «Найти и заменить» из командной строки, но я записал, что мне нужно сделать, как макрос, в Notepad ++. Так что я не уверен, что, возможно, эти макросы можно вызывать в командной строке? Myles 6 лет назад 0
Есть плагин NppExec, который позволяет вам выполнять скрипты с помощью меню «Выполнить» (F5) в Notepad ++, но можно ли его как-то использовать в Win 7 CMD, чтобы делать то, что мне нужно? Myles 6 лет назад 0

1 ответ на вопрос

1
LotPings

Windows 7 поставляется с PowerShell v2, который поддерживает регулярные выражения с негативными взглядами.

Если я правильно интерпретирую ваш RegEx, вы хотите применить две цифры, 99_ведущие ко 2-му полю, чтобы отследить и 3-е поле, при условии, что _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

Привет, LotPings, я просто скопировал, вставил твой код и сохранил как пакетный скрипт. Когда я пытаюсь перетащить файл csv, он открывает окно cmd и повторяет следующее «Существует дублированное имя файла или файл не найден». Заранее спасибо за помощь! Myles 6 лет назад 0
Может быть, измененный или оригинальный файл можно сохранить с помощью «_ORIGINAL» или «_MODIFIED»? Не уверен, как изменить скрипт, чтобы сделать это. Myles 6 лет назад 0
Извините, пропущенный сдвиг в качестве второй последней строки исправлен. LotPings 6 лет назад 1
Включено приложение `_Original` к имени файла LotPings 6 лет назад 1
Кажется, это сработало при изменении файла базы данных. Я должен был скопировать файл на рабочий стол, чтобы сделать это, хотя, потому что командное окно говорит мне «UNC-пути не поддерживаются». Место, где хранятся все CSV, является сетевым местоположением. Любой способ обойти это? Я не слишком волнуюсь, если это слишком много проблем для решения. Myles 6 лет назад 0
Странная вещь, на самом деле, я оставил все как есть, и несмотря на то, что он дал мне сообщение о путях UNC, он все еще создал файл CSV (в настоящее время 0 КБ) и, похоже, что-то делает. Возможно это все еще создаст это. Я дам вам знать достаточно скоро. Myles 6 лет назад 0
Это сработало! Я проведу еще несколько тестов на еще нескольких файлах базы данных, но пока что все работает. Похоже, я буду отмечать это как ответ достаточно скоро! Спасибо LotPings! Myles 6 лет назад 0