Running a cmd command from notepad++ and putting the output into a new buffer?
Solution 1
It seems to be me the original Q is about Notepad++ supporting something similar to vi's ability to read the output (stdout
) of a shell command into the current doc (general buffer
in vi termonology),
vi Example
:r! ls
Description
:
( ex
line editor command )
r
( read )
!
( from the shell, the output (stdout
) of the command
ls
into the current doc ( nothing specified, default is to read into general buffer
)
Notepad++ v 7.7.1 ( 32-bit ) Example
F5
or navigate menu system, Run menu
to Run.. menu-item
Enter the desired command into the textbox of the notepad++ Run
dialog,
cmd.exe /c echo %DATE% | clip
Press ENTER key
or Click Run button
Ctrl+V contents of clipboard into Notepad++ document.
Solution 2
You can use pork2sausage. Just open Plugins Admin in newer Notepad++, or install Plugin Manager in older versions, then install the plugin from there. Otherwise go to the Plugin Central and download the zip file manually
The plugin transforms a selected text to whatever you want, once your transformer (a console program which takes inputs then generates an output) is set properly with Pork to Sausage plugin.
The attractive part of this plugin is its flexibility: one (or more) small program(s) can be written in any language (such in java or .Net), or usage of the other programs in order to transform your selected text in Notepad++.
Up to 20 commands are customizable.
Edit: The old link doesn't work anymore so I've replaced with an archive link. You can find the new updated list here
After installing open Plugins > Port to Sausage > Edit User Commands and add whatever command you want to the ini file. If it's not there you'll need to create it first. After that restart Notepad++ for the plugin to reload the new config
Here's an example to convert the selected text to uppercase (of course in reality you should use the built-in case conversion from Notepad++)
[toupper]
progPath=C:\Windows\System32\cmd.exe
progCmd=cmd /c "echo $(SELECTION) | tr [:lower:] [:upper:]"
workDir=C:\Users\...\tmp
That assumes GNU tools are available in your path. You can also use PowerShell which is already available for everyone:
[toupper]
progPath=C:\WINDOWS\System32\WindowsPowerShell\v1.0\powershell.exe
progCmd=powershell -C "Write-Host -NoNewline '$(SELECTION)'.ToUpper()"
workDir=C:\Users\...\AppData\Local\Temp
To make the above example work with newlines or special characters it's a little bit trickier because you need to add 2 more options progInput
and progOutput
to pass the input string and read output back as file like this
[toupper_multiline]
progPath=C:\WINDOWS\System32\WindowsPowerShell\v1.0\powershell.exe
progCmd=powershell -C "$t = '$(TIMESTAMP)'; (Get-Content -Encoding ascii ('C:\Users\user\AppData\Local\Temp\in_' + $t)).ToUpper() | Set-Content -Encoding ascii ('C:\Users\user\AppData\Local\Temp\out_' + $t)"
workDir=C:\Users\user\AppData\Local\Temp
progInput=C:\Users\user\AppData\Local\Temp\in_$(TIMESTAMP)
progOutput=C:\Users\user\AppData\Local\Temp\out_$(TIMESTAMP)
Note that currently it doesn't work properly due to some bug in encoding handling in the plugin
You can also prevent the output to overwrite the selected text with replaceSelection
. You can find more information in the plugin's comment or in pork2Sausage.ini
Solution 3
Is it possible to use Notepad++ to run a command from the Windows command prompt and place the output in a Notepad++ buffer?
As far as I am aware, not directly. That said, a batch file might help in this case e.g.:
@rem Redirects both STDOUT and STDERR to e.g. cli_tmp.txt
%* > C:\temp\cli_tmp.txt 2>&1
"C:\Program Files (x86)\Notepad++\notepad++.exe" C:\temp\cli_tmp.txt
exit()
If you save this as ex. open_npp.bat and register it in your Windows Path
, you could then use ex.:
open_npp echo hello
at a command prompt and the text output from echo hello
(i.e. hello
) would appear in a new Notepad++ tab labeled as cli_tmp.txt
. Furthermore, you could use the Notepad++ Run... menu item to execute cmd /k open_npp echo hello
to get the same effect as running open_npp echo hello
from the command line.
Notes
The biggest drawback to this approach is that you'll likely want to copy the output or re-save your temp document with a different title each run, as your output will be typically overwritten each time the batch file is called.
As is, in the batch example given, output from STDERR is written to the temp file (vs. console) and the command window is closed immediately upon completion (
exit()
). However, this behavior can obviously be changed.This method likely won't catch interactive command input/output properly. Likewise, if a process hangs or takes forever, you might be stuck guessing about what's happening.
I have never had an issues using this kind of batch file but there could always be edge cases. =P
Solution 4
In Notepad++ Console window is possible to execute a shell command and redirect the output into clipboard buffer.
For example, to copy current date and time into clipboard:
cmd /c Echo %DATE% %TIME% | clip
Related videos on Youtube
leeand00
Projects jobdb - Creator of Open Source Job Search Document Creator/Tracker http://i9.photobucket.com/albums/a58/Maskkkk/c64nMe.jpg Received my first computer (see above) at the age of 3, wrote my first program at the age of 7. Been hooked on programming ever since.
Updated on September 18, 2022Comments
-
leeand00 almost 2 years
I'm running Windows and missing
vim
; is it possible to use Notepad++ to run a command from the Windows command prompt and place the output in a notepad++ buffer?-
user1686 about 6 yearsFYI, Vim runs on Windows.
-
Klitos Kyriacou over 5 yearscommand
| clip
and then ctrl+v into Notepad++ window.
-
-
phuclv about 5 years
No
are you sure? Provided that Notepad++ has strong plugin support -
phuclv almost 5 yearsThis is plagiarism. Your answer
cmd.exe /c echo %DATE% | clip
is exactly like Martin Valach's answer months ago. It's also similar to Klitos Kyriacou's comment last year. Besides, it's in no way the best way to achieve the purpose as you still need to Ctrl+V