What I would like
I would like to easily run a batch file without leaving Visual Studio. The batch files are not always the same, they change depending on the solution I'm working with.
What I know so far
I know you can create custom shortcuts in the Tools section of Visual Studio (Under External Tools).
My solutions have various scripts/batch files and I wish there was a way to create shortcuts under a solution folder or some other place that is solution specific.
I can create the scripts but there doesn't seem to be a way to run the script. I don't like having to open Windows Explorer each time I want to run a script.
Perhaps an add-in that would start a process with the selected file in the solution explorer? Or something similar?
Here is a full steps on how to add the external tool to run the batch files by right click on the file and select "Run the batch file", also whenever you need to edit the file, just open and edit it.
Here's how to do it...
Create an external tool called "Run batch file"
1) From Tools-> External Tools, create a new and put the below parameters:
2) Set the Command to: CMD.EXE
3) Set the Arguments to: /c "$(ItemPath)"
4) Set the Initial directory to: $(ItemDir)
5) ![DO NOT Check the "use output window" check box and then Apply to create the command
Note where the new command appeared in the list of commands.
The external commands are numbered from 1 starting below the divider bar.
#1 is usually "Create GUID"
To make it easy to remember you can move the new command to the top, to be the number one command in the list.][1]
6) Now go to Tools -> Customize and select the commands tab.
7) Select the Context menu radio button and select "Project and Solution Context menus | Item" from the drop down.
8) Now use "Add Command..." to add a new command
9) In the Categories list select "Tools"
10) From the commands select the "External Command #" that corresponds to the position of the "Run Batch file" custom command you noted the number of in step 5 above.
11) Move it to the right position in the list add keyboard short cuts etc.
12) Close the dialogue.
Now right click on the batch file and you should see a "Run batch file" menu item. This will execute th batch file and show it's output in the VS Output window.
Hope it helps.
I did this by right clicking the batch file and choosing "Open With", then I added a new editor and used explorer.exe (and then set that to be the default editor).
The best way to proceed is to write an external tool, and then you can pass in parameters based on your current solution that is loaded.
There are many project and solution specific variables you can pass to your external tool.
Open up the 'External Tools' dialog, and select your tool in the list box.
You will see the title of your external tool, as well as the command that points to the script or batch script you want to call.
The arguments edit box has a button next to it with an arrow next to it. Click the arrow and you will see a big list of variables, or parameters, you can pass to your external tool.
So, for instance you can use the following:
$(ProjectDir) - The full path directory of the project you are working on.
for instance "C:\builds\myproject"
$(ProjectPath) - The full path name of the vcproj you are working on.
for instance "C:\builds\myproject\foo.vcproj"
$(ProjectName) - The name of the project.
for instance "foo"
$(SolutionDir) - The full path directory of the solution that is currently loaded.
for instance "C:\builds\mysolution"
etc...
Will the Build Event hooks (pre-build, pre-link, post-build) be of any use to you? Also you can check out the Custom build setup too. Those are part of the solution.
You can add a new Makefile project to your solution. A Makefile project is a simple Visual Studio project whose build action is any command line you want. It is listed under the Visual C++ - General category in the new project dialog. In your case, just set the build command to invoke your batch script. Then, to execute your script while working in your solution, just right click on the Makefile project in the Solution Explorer and choose the Build context menu item.
Since you intend to run this script run on-demand (as opposed to running each time you build) you will want to remove it from the build in the Configuration Manager. Don't forget to disable building the project for all platforms and configurations.
Most of the macros are available to the Makefile project's build command line, although perhaps some that are associated with your main project will not have the correct value.
On my environment (Visual Studio 2022 v17.3.6 on Windows 11 v21H2) the $(ItemPath) parameter for cmd.exe leads to an error, but it works properly without:
This seems reasonable to me as the command is called "Open With" and works like the Windows "Open With" command by autmatically passing the file as an argument.
Related
When I open files in PL SQL developer I want to copy file path so I can go directly to the directory I need.
One way is to hover on the file and wait for tool tip to appear. But I have to wait a few seconds and I am not able to copy the path. Can I know the path in any other way?
Go to Configure > Tools
New
Define a tool as:
Executable/Script: cmd
Parameters: /c echo "#path" & pause
for the image I picked Tree View.png from the default selection.
The new tool will appear in the Tools menu under "User-defined tools" (briefcase icon).
Add it to the menu bar using More Buttons/Customize Quick Access Toolbar > More Commands > Commands tab > User Tools, then drag and drop (if using the Ribbon), or Right-click on toolbar, Customize > Commands tab > User Tools (if using the classic toolbar).
Or if you prefer, follow the same steps to add a custom tool calling explorer.exe passing #dir, the directory path of the current editor file. Selecting this custom tool from the menu will open Windows Explorer at the current file's location.
More suggestions and screenshots here: https://www.williamrobertson.net/documents/plsqldeveloper-setup-1.html#tools
On my windows pc, I would just double click a folder and click "Open in VS Code" to a open a folder, which saved time for me when looking through lots of code online. With Mac, however, I do not have this option. I have to directly open vscode and click "Open" to open a new folder. How do I directly open a file in vscode through finder in macOS?
2023 Update - Use Native Method
Open the Command Palette (Cmd+Shift+P) and type shell command to find the Shell Command: Install 'code' command in PATH command.
Restart all terminal sessions for the new $PATH value to take effect.
You'll be able to type code . in any folder to start editing files in that folder.
If you want to do it in Finder, you can write an Automator script to do it (it's easier than it sounds, AND shows you the power of the OS).
Launch Automator
Create New Document
Create a new Quick Action
Add the Action... (New Method - 10.13+)
Workflow receives current files or folders from Finder.
Add a new "Open Finder Items" action to the workflow. (drag the "Open Finder Items" object, highlighted in the screenshot, to the empty window on the right)
Select "Visual Studio Code" from the list.
Add the Action... (Old Method)
Workflow receives current files or folders from Finder.
Add a new Run Shell Script action to the workflow. (drag the "Run Shell Script" object, highlighted in the screenshot, to the empty window on the right)
Configure the Workflow (Old Method)
Set the Pass Input to be as arguments
Paste the following in the input box:
open -n -b "com.microsoft.VSCode" --args "$*"
Save the action using a name like Open in Visual Studio Code.
You may now right-click on the folder and find your newly created task under Quick Actions.
The simplest solution is to create a Quick Action with Open Finder Items:
This way you don't need a shell script that might break with an OS update or VS Code update
Launch Automator and select Quick Action or File > New > Quick Action If Automator is already open.
Set Quick Action receives selected to files or folders and in to Finder.
Choose an Image (icon) select Choose.. and double click Visual Studio Code in the window that pops up, this will set your quick action icon to the same as VS Code
Add Open Finder Items, Choose open with as Other.. select Visual Studio Code and save your Quick Action as Open in VSCode optionally choose an Image for your Quick Action job done.
Finally just hit Cmd+S to save and name it Open with VSCode
Well you need to understand. macOS has different ways to do things than windows and initially it might be a challenge. For starters you start to make use of Terminal. its beautiful.
Now answering your question.
Open your VS code and then, press CMD + SHIFT + P, type shell command and select Install code command in path. Afterwards, navigate to any project from the terminal and type code . from the directory to launch the project using VS Code.
Using the new shortcuts app.
Download:https://github.com/gluedpixel/shortcuts
Or create it by yourself
Open Shortcuts app > Quick Actions
Change from receive any to Files and Folders
Add run shell script action
Paste the code open -n -b "com.microsoft.VSCode" --args "$*"
Change input to Shortcut input
Click on Shortcut input and set type to "Folder" & Get to File Path
There are some ways suggested here in the VS Code GitHub Issues tracker, but I would go with the first option of dragging the folder onto the app icon if you have VS Code icon in your dock!
If you really want to be able to do so from a right click, then this repository has a workflow solution. https://github.com/Sankra/OpenFolderInVSCode
Drag and drop the folder from Finder onto an empty VSCode window.
Found a way to achieve a 'Quick Action' that met my needs using the following steps using MacOS' Shortcuts app (No Automator needed):
if you are looking for screenshots as well, I wrote a small Notion page
Open the ‘Shortcuts’ app on your Mac
On the Left Pane, navigate to ‘Quick Actions’
On the top bar, press the ➕ button to add New Shortcut.
Click on ‘Any’ and change to ‘Files and Folders’ by selecting only those from the dropdown that appears on clicking the ‘Any’ field.
Click on ‘Action Library’ on the right pane and search for ‘shell’. Drag and drop the ‘Run Shell Script’ onto the main pane. This will add the action to the Shortcut’s flow.
In the shortcut details (on the right pane), make sure Use as Quick Action is ticked and so are ‘Finder’ and ‘Service Menu’.
In the newly added action called ‘Run Shell Script’ write “code “ and right-click to get the below pop-up, go ahead ‘Insert variable’ and then ‘Shortcut Input’.
Click on the ‘Shortcut Input’ tag that appears. A pop must appear, choose ‘File Path’ and just click anywhere else. This will change the tag to ‘File Path’.
Set ‘Pass Input:’ option to ‘as arguments’.
Be sure to set a cool name for your new Shortcut! I named mine a boring “Open in VSCode”.
Open a new ‘Finder’ Instance, right-click on a folder, go to ‘Quick Actions’ > ‘Customize...’
Make sure your Shortcut’s Name is selected. Exit the dialogue and Test!
There is a Terminal command named code, I would stick with it and you should get used to it as well if you are regularly using VS.
Follow the one-time setup with-in VS Code
Open your VS code and press ⌘ CMD + SHIFT + P
Type shell, and select Shell Command: Install 'code' command in PATH from the list
Open Terminal and hit any of the commands below:
code <path-to-folder>
OR
cd <path-to-folder>
code .
OR
cd <path-to-folder> && code .
I've actually managed to have it as an icon you can just add to the Finder window as such:
The script will allow you to open the current folder path in VSCode.
The steps to do so are:
Create a new Application with Automator
Select the "Run shell script" from the menu and drag it to the editor
Paste the following small script to the text area:
finderPath=`osascript -e 'tell application "Finder" to get the POSIX path of (target of front window as alias)'`
open -n -b "com.microsoft.VSCode" --args "$finderPath"
Save the Application to the Applications folder
Right click the app and drag and drop your desired VSCode icon to the blank area to the left of the name and close the Get Info window
Press and hold the Command key and drag the Application to an empty space in the Finder title row like in the picture
Test that it works by pressing on the icon. VSCode should now open with the content of the current folder in the navigation bar
Here is an alternative derived from the accepted answer.
Indeed the accepted solution by #jnovack just opens VS Code for me, but not the desired folder. If VS Code is already running it just switches the focus to a running instance of VS Code.
Solution
Provided that you have the code CLI command installed (if not, go to VS Code and do CMD+SHIT+P>"Shell Command: install 'code' in PATH")
Then open a terminal and run which code. You should get the code executable path looking somethin like /usr/local/bin/code
Then, as per #jnovack 's answer,
Open Automator
Create a new Document (CMD+N)
Create a new Quick Action
Workflow receives current files and folders from Finder.
Add a new Run Shell Script action to the workflow. (drag and drop the "Run Shell Script" object)
Pass input as arguments
Paste this code in the shell command field /usr/local/bin/code -n "$*" or replace with your path to the code executable if it differs from this one.
Save the action
Tbh. I would have expected to be able to use just code -n "$*", but for some reason, the PATH used by the automator's shell seems to be different from that used in the terminal. I'd welcome some input on that matter.
I find this to be the best solution out there:
https://github.com/RoadToDream/SzContext
I want to redirect output from our code review tool that we are writing in VS2010, so that it's messages are parsed by Vs2010 and we can click on them to goto file, line, column.
I vaguely remember learing about this in vs2005, you output your text to a certain kind of window, with the exact format below, and then vs would parse the message and you could click on it to goto the specific location...
D:\Project Files\CIS3G\Webapp_Test_BLL\Evaluation\Reports\TestEvaluationHistoryBLL.cs(27,44): warning CS0649: Error text
It was constructed thusly :
full file path:[error or warning type]:error message
Then it just worked "magically"..
But this is all I can remember from a conversation ~10 years ago about how to do this.
Does anyone remember what I'm talking about and can direct me to information about how to make this work with output from a tool we write to work within visual studio 2010?
Maybe a tutorial?
This post:
Formatting the output of a custom tool so I can double click an error in Visual Studio and the file opens
Talks about doing it in the build, but I'd like to be able to run the code review tool independantly and get it to work too...
You've pretty much got it right in your question.
As an example, create a file in your temp directory (in a command prompt do echo %temp% to find it) called test.bat
Add the following to test.bat:
#echo D:\Project Files\CIS3G\Webapp_Test_BLL\Evaluation\Reports\TestEvaluationHistoryBLL.cs(27,44): warning CS0649: Error text
Now in VS10, select Tools->External Tools.... In the new window, select Add.
In the Command: field, enter %temp%\test.bat
Select Use Output window and click OK.
Your new tool should now show up in VS10's Tools menu. If you click on it, your Output window should display a clickable message, which will open "D:\Project Files\CIS3G\Webapp_Test_BLL\Evaluation\Reports\TestEvaluationHistoryBLL.cs" if it exists, and will put the cursor on line 27 if it exists (if not, line 1) at column 44 if it exists (if not, column 1).
You can go further and add a shortcut key to your custom tool.
Select Tools->Options...->Environment->Keyboard. Find your tool in the list of commands. It will show as Tools.ExternalCommand[x] where [x] is its position in the list of External Tools. Enter your chosen shortcut key(s) in the Press shortcut keys: box and click OK.
Here is an article on doing this written in 2004 that still applies today:
http://www.codeproject.com/Articles/6176/Using-the-Output-Window-in-DevStudio
Yes, I wrote it, but as was pointed out earlier, there is nothing particularly magic about this. The article mentions VC6 and VC7, but I still use this technique in VS2005, VS2008, and VS2010 for the output of PC-Lint.
There's an external command I'm using constantly - basically launching a batch file. I'd like to put a toolbar button (and possibly keyboard shortcut) for this into the IDE. Is there an easy way to do that?
First, add an item to your Tools menu by choosing Tools, External Tools, and filling out the dialog, like this:
Then bring up Tools Customize, click the Keyboard button at the bottom, and find the appropriate external tool number:
All the configured external commands in VS are available to add to a Toolbar or Menu through the Tools>Customize menu as "External Command ##". You just need to know which number corresponds to the particular command you've configured. I believe it is in order of entry in the external commands list.
Similarly, you can find those names in the commands list in Options>Environment>Keyboard and assign a shortcut to your command that way.
Is it possible to run a batch file as a menu item in studio 2008?
Yes, go to Tools | External Tools in the menus and add your batch file as the Command. You can also pass in any arguments that you want such as the build target, project directories, etc.
Once you do this, your batch file will appear as one of the items on your tools menu. If you want, you can then add a toolbar button for it by going Tools | Customize | Tools and dragging the External Command # that matches your tool to the toolbar. You will then want to change it to an icon and select an image for it.
The tools are numbered 1 based in the order they appear in the menu.
Run batch files in VS Solution Explorer directly
This is much better than having external tool since you can execute a batch file simply by double clicking on it in solution explorer just as if you were opening a code file. I've written a blog post about it that will help you lots to configure it and of course use it.
A sidenote
You've asked this question 2 years ago, but I see that nobody mentioned this technique so I'm providing this answer for any future reference. I hope it gets upvoted, so it will be near the top for readers to see.
Use "Tools"/"External Tools..." menu item and add your bat-file to "Tools" menu
As A refinement to the given answer:
Say your project/solution have several BAT that are project specific - you wouldn't want to run one from another project - that's what could happen with the above answer - because you have hard wired the path to the bat.
Just set up one external tool nameed "Run BAT", sets its Command to $(ItemPath), and set the initial directory to $(ItemDirectory), The dialog will whinge that this is not a real executable - but ignore that.
Tie the tool to a button if you want.
Now to run the BAT of choice from the project or solution - just open the .bat for editing and select the "Run BAT" external tool.
you could also set the "use output" option as well and the bats output will be in the output window.