batch
Table of Contents
Fallpits
#when using variables no empty spaces after equal VAR TEST1="WILL WORK" VAR TEST2 ="VAR WILL BE EMPTY"
call
To call another *.bat use
call "D:\...\compile.cmd"
start
To start a programm in the console, and pass it some parameters with empty spaces use the following syntax:
start "WINDOWNAME" /B "D:\Programme Portable\Putty\putty.exe" -ssh ubuntu@ec2-1-22-33-44.eu-east-3.compute.amazonaws.com:22 -l ubuntu -i "D:/Path to Key/ssh-putty-ubuntukey-private.ppk"
The first argument of “start” - is the window title. Pass an empty one, for the next command to be recognized as the path to the programm.
/B flag makes windows not creating a new window.
Documentation start command: http://ss64.com/nt/start.html
Start cm with a command works like this. Use /k to start cmd with a commad.
start cmd /k "robocopy c:/path/to/dir c:/path/to/backup /E"
Printers
Put the following into the “run” field to see all possible commands.
rundll32 printui.dll,PrintUIEntry /?
:: delete network printer per batch rundll32 printui.dll,PrintUIEntry /dn /n "\\brian\OKI C5100 (v2)"
:: install a network printer per batch rundll32 printui.dll,PrintUIEntry /q /in /n "\\brian\HPColorSekri"
Counter
To use Counters - deplayed expanation must be used in batch. The Variables are then translated to numers eveny loop.
- It must be enabled by setlocal ENABLEDELAYEDEXPANSION
- variables are loaded by !var! von %var%
setlocal ENABLEDELAYEDEXPANSION
set /A cnt=1
for %%f in (*.cer) do (
echo %%~nf
set /A cnt=cnt+1
echo !cnt!
)
Commands
SUBST
Create a virtual disk from a LOCAL folder
subst z: b:\user\betty\forms # delete subst z: b:\user\betty\forms \D
SCRIPT to find java process by command line argments
Name it findJavaProcessByCommandline.bat Usage:
call findJavaProcessByCommandline.bat javaCommandLinePart if errorlevel 1 echo NoFindings & exit /b 1
| if errorlevel 1 | check result of nested script. 1 if nothing found |
| echo NoFindings | Echo |
| & exit /b 1 | and exits the parent script. Instead you can do whatever you want with this info |
@echo off
:: check if empty
IF [%1] == [] GOTO noarg
:: use the argument
set likeString=%1
setlocal EnableDelayedExpansion
set processIdFinding=
for /f %%i in ('wmic process where "Caption Like 'java.exe' AND CommandLine Like '%%!likeString!%%' " get ProcessId') do (
set processIdFinding=!processIdFinding!%%i
)
if "%processIdFinding%"=="" (
goto nofindings
) else (
goto findings
)
:nofindings
echo Nothing Found
exit /b 1
:findings
echo Finding: %processIdFinding%
exit /b 0
:noarg
echo Please provide the Stringto be searched withing java process commandline as an argument
exit /b 1
batch.txt · Last modified: by 127.0.0.1
