From time to time a DOS batch (“bat” or “cmd”) file needs to be written to perform some task or series of tasks. There are various commands that I seem to consistantly search for on the Internet. Here is a list of some of those useful DOS batch commands.
How to delete files equal to zero bytes in size.
Delete a specific file.
for /F %%A in ("deleteme.txt") do If %%~zA equ 0 del deleteme.txt
Delete all files equal to zero.
for %%F in (*.*) do ( if %%~zF LSS 1 del %%F )
Use IF EXIST statement to check for the presense of a directory.
C: if not exist C:\win\nul goto nowindir cd \win :nowindir
Populating Array
set file_list=(file1.txt file2.txt file3.txt) for %%i in %file_list% do echo %%i
How to conditionally take action if FINDSTR fails to find a string
findstr /c:"stringToCheck" "c:\MyFolder\fileToCheck.bat" >nul 2>&1 || xcopy "C:\OtherFolder\fileToCheck.bat" "c:\MyFolder"
Multiple commands in a batch file loop
For %%f in (*.txt) do ( Command1 %1 Command2 %1 )
Stop script on DEL error
:: Delete all files, but exit if a file is locked. for %%F in (*.*) do ( @echo Deleting %%F ren %%F tmp 2> nul if ERRORLEVEL 1 ( @echo Cannot delete %%F, it is locked. exit /b 1 ) del tmp )
@echo off setlocal set error=0 for /f %%i in ('del notepad2.exe 2^>^&1') do set error=1 echo %error%
Source(s)
http://www.computerhope.com/issues/ch000754.htm
http://support.microsoft.com/kb/65994
http://superuser.com/questions/191224/populating-array-in-dos-batch-script
http://stackoverflow.com/questions/8530976/how-to-conditionally-take-action-if-findstr-fails-to-find-a-string
http://www.vistax64.com/powershell/138616-multiple-commands-batch-file-loop.html
http://stackoverflow.com/questions/560967/how-to-stop-batch-script-on-del-failure
http://www.dostips.com/DtCodeBatchFiles.php#Batch.FileDate