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