中国DOS联盟论坛

China DOS Union

-- Unite DOS · Advance DOS · Grow DOS --
Union site: www.cn-dos.net Forum site: www.cn-dos.net/forum
Guest | Log in | Register | Members | Search | China DOS Union
中国DOS联盟论坛
The time now is 2026-08-12 13:15
47,811 topics / 349,897 posts / today 0 new / 48,256 members
DOS批处理 & 脚本技术(批处理室) » P processing notes. There are many things you don't know.
Printable Version  3,218 / 19
Floor1 hackxw Posted 2008-02-14 17:08
初级用户 Posts 28 Credits 28 From 山东省淄博市
### 1 echo and @Echo Control Commands
@ # Turn off single-line echoing
echo off # Turn off echoing from the next line
@echo off # Turn off echoing from this line. Usually the first line of a batch file is this
echo on # Turn on echoing from the next line
echo # Display whether current state is echo off or echo on
echo. # Output a "carriage return line feed", generally refers to a blank line
echo hello world # Output hello world

"Turning off echoing" means that when running a batch file, it does not display each command in the file, only the running results. The system automatically turns on echoing at the beginning and end of the batch processing.

### 2 errorlevel Program Return Code
echo %errorlevel% Each command ends, you can use this command line format to view the return code
Used to judge whether the previous command was executed successfully
Default value is 0, generally if a command execution fails, errorlevel will be set to 1

### 3 dir Display File and Subdirectory List in Directory
dir # Display files and subdirectories in the current directory
dir /a # Display files and subdirectories in the current directory, including hidden files and system files
dir c: /a:d # Display directories in the current directory of drive C
dir c:\ /a:-d # Display files in the root directory of drive C
dir d:\mp3 /b/p # Display files in the d:\mp3 directory one screen at a time, only display file names, not time and size

dir *.exe /s Display all .exe files in the current directory and subdirectories
Where * is a wildcard, representing all file names, and another wildcard ? represents one arbitrary letter or Chinese character
Such as c*.* represents all files starting with c
?.exe represents all .exe files with a file name of one letter

If the specified directory or file does not exist, it will return errorlevel 1

Each folder's dir output will have 2 subdirectories . and ..., representing the current directory
.. represents the parent directory of the current directory
dir . # Display files and subdirectories in the current directory
dir .. # Display files and subdirectories in the parent directory of the current directory

Other parameters can be referred to dir /?

### 4 cd Change Current Directory
cd mp3 # Enter the mp3 directory in the current directory
cd .. # Enter the parent directory in the current directory
cd\ # Enter the root directory
cd # Display the current directory
cd /d d:\mp3 # Can change both the drive letter and the directory at the same time

cd "Documents and Settings"\All users If the file name has spaces, it is recommended to add quotes. Sometimes not adding quotes may cause errors, such as in login scripts

If the directory to be changed does not exist, an error will occur and return errorlevel=1

### 5 md Create Directory
md abc # Create a subdirectory abc in the current directory
md d:\a\b\c # If d:\a does not exist, it will be created automatically

### 6 rd Delete Directory
rd abc # Delete the abc subdirectory in the current directory, requires it to be an empty directory
rd /s/q d:\temp # Delete the d:\temp folder and its subfolders and files, no need to press Y to confirm

### 7 del Delete File
del d:\test.txt # Delete the specified file, cannot be a hidden, system, or read-only file

del *.* Delete all files in the current directory, not including hidden, system, or read-only files, requires pressing Y to confirm

del /q/a/f d:\temp\*.* Delete all files in the d:\temp folder, including hidden, read-only, system files, not including subdirectories

del /q/a/f/s d:\temp\*.* Delete all files in d:\temp and subfolders, including hidden, read-only, system files, not including subdirectories

### 8 ren Rename File
ren 1.txt 2.bak # Rename 1.txt to 2.bak
ren *.txt *.ini # Rename all .txt files in the current directory to .ini files
ren d:\temp tmp # Supports renaming folders

### 9 cls Clear Screen

### 10 type Display File Content
type c:\boot.ini # Display the content of the specified file, program files generally display garbled characters
type *.txt # Display the content of all .txt files in the current directory

### 11 copy Copy File
copy c:\test.txt d:\ Copy the c:\test.txt file to d:\

copy c:\test.txt d:\test.bak Copy the c:\test.txt file to d:\ and rename it to test.bak

copy c:\*.* Copy all files in c:\ to the current directory, not including hidden files and system files
If the target path is not specified, the default target path is the current directory

copy con test.txt Wait for input from the screen, press Ctrl+Z to end input, and the input content is saved as test.txt file
con represents the screen, prn represents the printer, nul represents the empty device

copy 1.txt + 2.txt 3.txt Merge the contents of 1.txt and 2.txt and save it as 3.txt file
If 3.txt is not specified, it is saved to 1.txt

copy test.txt + Copy the file to itself, actually modifies the file date

### 12 title Set the Title of the cmd Window
title New Title # You can see that the title bar of the cmd window has changed

### 13 ver Display System Version

### 14 label and vol Set Volume Label
vol # Display volume label
label # Display volume label and prompt to enter a new volume label
label c:system # Set the volume label of drive C to system

### 15 pause Pause Command
When running this command, the following message will be displayed: Press any key to continue . . .
Generally used to see the content displayed on the screen clearly

### 16 rem and :: Comment Command
Comment lines do not perform operations

### 17 date and time Date and Time
date # Display current date and prompt to enter a new date, press "Enter" to skip input
date/t # Only display current date, do not prompt to enter new date
time # Display current time and prompt to enter new time, press "Enter" to skip input
time/t # Only display current time, do not prompt to enter new time

### 18 goto and : Jump Command
:label # A line starting with : indicates that this line is a label line, and label lines do not perform operations
goto label # Jump to the specified label line

### 19 find (External Command) Find Command
find "abc" c:\test.txt Find lines containing the string abc in the c:\test.txt file
If not found, it will set errorlevel return code to 1

find /i "abc" c:\test.txt Find lines containing abc, ignoring case

find /c "abc" c:\test.txt Display the number of lines containing abc

### 20 more (External Command) Display Screen by Screen
more c:\test.txt # Display the content of c:\test.txt file screen by screen

### 21 tree Display Directory Structure
tree d:\ # Display the file directory structure of drive D

### 22 & Execute Multiple Commands in Sequence, Regardless of Whether the Command is Executed Successfully
c: & cd\ & dir /w Equivalent to writing the following 3 lines of commands into one line
c:
cd\
dir /w

### 23 && Execute Multiple Commands in Sequence, and Do Not Execute Subsequent Commands When Encountering a Command That Fails to Execute
f: && cd\ && dir >c:\test.txt
Note: If drive F does not exist, then the following 2 commands will not be executed

find "ok" c:\test.txt && echo Success If the word "ok" is found, display "Success", otherwise do not display

### 24 || Execute Multiple Commands in Sequence, and Do Not Execute Subsequent Commands When Encountering a Command That Executes Correctly
f: || e: If there is drive F, do not enter drive E

find "ok" c:\test.txt || echo Not successful If the word "ok" is not found, display "Not successful", if found, do not display

### 25 | Pipe Command
The execution result of the previous command is output to the next command

dir *.* /s/a | find /c ".exe"
The pipe command means to first execute the dir command, and execute the subsequent find command on its output result
The result of this command line: output the number of .exe files in the current folder and all subfolders

type c:\test.txt|more This has the same effect as more c:\test.txt

### 26 > and >> Output Redirection Command
> Clear the original content in the file and then write
>> Append content to the end of the file without clearing the original content
Mainly output the content originally displayed on the screen to the specified file

If the specified file does not exist, it will be automatically generated

echo hello world>c:\test.txt Generate the c:\test.txt file with the content hello world
This format is used a lot in batch files, and can generate temporary files such as .reg .bat .vbs

type c:\test.txt >prn Do not display the file content on the screen, redirect to output to the printer

echo hello world>con Display hello world on the screen, in fact, all output is default >con

copy c:\test.txt f: >nul Copy the file and do not display the prompt "File copied successfully", but if drive F does not exist, the error message will still be displayed

copy c:\test.txt f: >nul 2>nul Do not display the prompt "File copied successfully", and if drive F does not exist, do not display the error prompt

echo ^^W ^> ^W>c:\test.txt The content of the generated file is ^W > W^. The > is a control command. To output them to the file, you must add a ^ in front

### 27 < Get Input Information from the File Instead of from the Screen
Generally used for commands that need to wait for input such as date time label
@echo off
echo 2005-05-01>temp.txt
date <temp.txt
del temp.txt
In this way, the current date can be modified without waiting for input

### 28 %0 %1 %2 %3 %4 %5 %6 %7 %8 %9 %* Parameters Passed to the Batch File from the Command Line
%0 Batch file itself
%1 First parameter
%9 Ninth parameter
%* All parameters starting from the first parameter

Create test.bat in the root directory of drive C with the following content:
@echo off
echo %0
echo %1
echo %2
echo %*

Run cmd and enter c:\test.bat "/a" /b /c /d to see the meaning of each parameter

Modify the content of test.bat as follows
@echo off
echo %1
echo %~1
echo %0
echo %~f0
echo %~d0
echo %~p0
echo %~n0
echo %~x0
echo %~s0
echo %~a0
echo %~t0
echo %~z0

Run cmd again and enter c:\test.bat "/a" /b /c /d. You can refer to call/? or for/? to see the meaning of each parameter. Note that date comparison and size comparison can be performed on files here

echo load "%%1" "%%2">c:\test.txt The content of the generated file is load "%1" "%2"
In the batch file, use this format to output command line parameters to the file

### 29 if Judgment Command
if "%1"=="/a" echo The first parameter is /a

if /i "%1" equ "/a" echo The first parameter is /a
/i means case-insensitive, equ is the same as ==, other operators are referred to if/?

if exist c:\test.bat echo There is a c:\test.bat file

if not exist c:\windows (
echo There is no c:\windows folder
rem Multiple commands can be enclosed in parentheses, called "compound statement"
rem The spaces in front of the line are for clarity
)

if exist c:\test.bat (
echo There is a c:\test.bat
) else (
echo There is no c:\test.bat
rem else means "otherwise", execute the subsequent command when the judgment result is false
)

### 30 setlocal and endlocal Set "Command Extensions" and "Delayed Environment Variable Expansion"
SETLOCAL ENABLEEXTENSIONS # Enable "command extensions"
SETLOCAL DISABLEEXTENSIONS # Disable "command extensions"
SETLOCAL ENABLEDELAYEDEXPANSION # Enable "delayed environment variable expansion"
SETLOCAL DISABLEDELAYEDEXPANSION # Disable "delayed environment variable expansion"
ENDLOCAL # Restore to the state before using the SETLOCAL statement

"Command extensions" are enabled by default
"Delayed environment variable expansion" is disabled by default
The system will automatically restore the default value at the end of the batch processing

The "command extensions" can be disabled by modifying the registry, see cmd /? for details. So for programs that use "command extensions", it is recommended to add SETLOCAL ENABLEEXTENSIONS and ENDLOCAL statements at the beginning and end to ensure that the program can run correctly on other systems

"Delayed environment variable expansion" is mainly used in compound statements of if and for, and there are practical examples in the description of set

### 31 set Set Variable
To reference a variable, you can add % before and after the variable name, that is %variable name%

set # Display all currently available variables, including system variables and custom ones
echo %SystemDrive% # Display the system drive letter. System variables can be directly referenced
set p # Display all variables starting with p, if none, set errorlevel=1
set p=aa1bb1aa2bb2 # Set variable p and assign the string after =, that is aa1bb1aa2bb2
echo %p% # Display the string represented by variable p, that is aa1bb1aa2bb2
echo %p:~6% # Display all characters after the 6th character in variable p, that is aa2bb2
echo %p:~6,3% # Display 3 characters after the 6th character, that is aa2
echo %p:~0,3% # Display the first 3 characters, that is aa1
echo %p:~-2% # Display the last 2 characters, that is b2
echo %p:~0,-2% # Display all characters except the last 2 characters, that is aa1bb1aa2b
echo %p:aa=c% # Replace all aa in variable p with c, that is display c1bb1c2bb2
echo %p:aa=% # Replace all aa strings in variable p with empty, that is display 1bb12bb2
echo %p:*bb=c% # Replace all characters before the first bb and the first bb with c, that is display c1aa2bb2
set p=%p:*bb=c% # Set variable p and assign the value of %p:*bb=c%, that is c1aa2bb2
set /a p=39 # Set p as a numeric variable with a value of 39
set /a p=39/10 # Support operators, use the truncation method for decimals, 39/10=3.9, truncate to 3, p=3
set /a p=p/10 # When using the /a parameter, the variable after = can be directly referenced without adding %
set /a p="1&0" #"And" operation, need to add quotes. Other supported operators are referred to set/?
set p= # Cancel variable p

set /p p=Please enter Display "Please enter" on the screen and assign the input string to variable p
Note that this can be used to replace the choice command

Note that variables are all replaced at one time in the compound statements of if and for. For example:
@echo off
set p=aaa
if %p%==aaa (
echo %p%
set p=bbb
echo %p%
)
The result will display aaaaaa because all %p% have been replaced with aaa when reading the if statement
The "replacement" here is referred to as "expansion" and "environment variable expansion" in /? help. You can enable "delayed environment variable expansion" and use ! to reference variables, that is !variable name!
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
set p=aaa
if %p%==aaa (
echo %p%
set p=bbb
echo !p!
)
ENDLOCAL
The result will display aaabbb

There are also several dynamic variables, which cannot be seen by running set
%CD% # String representing the current directory
%DATE% # Current date
%TIME% # Current time
%RANDOM% # Random integer, between 0~32767
%ERRORLEVEL% # Current ERRORLEVEL value
%CMDEXTVERSION% # Current command processor extension version number
%CMDCMDLINE% # Original command line that called the command processor
You can use the echo command to view the value of each variable, such as echo %time%
Note that %time% is accurate to milliseconds, and can be used for delay processing in batch processing

### 32 start Command to Call External Programs in Batch Processing, Otherwise Continue to Execute the remaining instructions after the external program is completed
start explorer d:\ Call the graphical interface to open drive D

@echo off
cd /d %~dp0
regedit /s 劲舞团.reg
start patcher.exe

Without the start command, when "劲舞团" runs, there will be a black cmd window behind

### 33 call Command to Call Another Batch File in Batch Processing, Otherwise the remaining batch processing instructions will not be executed
Sometimes some applications call incorrectly with start, and can also be called with call

### 34 choice (External Command) Choice Command
Let the user enter a character to choose to run different commands, the return code errorlevel is 1 2 3 4...
In win98 it is choice.com
In win2000pro it is not available, you can copy it from win98
In win2003 it is choice.exe

choice /N /C y /T 5 /D y>nul Delay for 5 seconds

The following is an example of a choice statement
@echo off
rem The following runs through in win2000pro, the chioce.com file copied from win98
choice /c:abc aaa,bbb,ccc
if errorlevel 3 goto ccc
if %errorlevel%==2 goto bbb
if errorlevel==1 goto aaa

rem Must judge the return code of higher values first
rem You can see that there are 3 ways to judge the errorlevel value. Sometimes one way is not easy to use, you can use another way
rem Directly running chioce is equivalent to running choice /c:yn

:aaa
echo aaa
goto end

:bbb
echo bbb
goto end

:ccc
echo ccc
goto end

:end

### 35 assoc and ftype File Association
assoc Set 'file extension' association, associated with 'file type'
ftype Set 'file type' association, associated with 'executable program and parameters'

When you double-click a .txt file, windows does not directly judge to open it with notepad.exe according to .txt
But first judge that .txt belongs to the txtfile 'file type' and then call the command line txtfile=%SystemRoot%\system32\NOTEPAD.EXE %1 associated with txtfile

You can modify these 2 associations in "Folder Options"→"File Types"

assoc # Display all 'file extension' associations
assoc .txt # Display the 'file type' represented by .txt, the result shows .txt=txtfile
assoc .doc # Display the 'file type' represented by .doc, the result shows .doc=Word.Document.8
assoc .exe # Display the 'file type' represented by .exe, the result shows .exe=exefile
ftype # Display all 'file type' associations
ftype exefile # Display the command line associated with the exefile type, the result shows exefile="%1" %*

assoc .txt=Word.Document.8 Set .txt as a word type document, you can see that the icon of the .txt file has changed

assoc .txt=txtfile Restore the correct association of .txt
ftype exefile="%1" %* Restore the correct association of exefile
If this association is damaged, you can run command.com and then enter this command

### 36 pushd and popd Switch Current Directory
@echo off
c: & cd\ & md mp3 # Create an mp3 folder in C:\
md d:\mp4 # Create an mp4 folder in D:\
cd /d d:\mp4 # Change the current directory to d:\mp4
pushd c:\mp3 # Save the current directory and switch the current directory to c:\mp3
popd # Restore the current directory to the previously saved d:\mp4

Generally not very useful, it will be a little helpful when the current directory name is uncertain

### 37 for Loop Command
This is relatively complex, please refer to for/?

for %%i in (c: d: e: f:) do echo %%i Call each string in the parentheses in turn and execute the command after do
Note %%i, in the batch processing, the for statement calls parameters with 2%
The default string delimiter is "space bar", "Tab key", "Enter key"

for %%i in (*.txt) do find "abc" %%i Execute the find command on all txt files in the current directory

for /r . %%i in (*.txt) do find "abc" %%i Search for lines containing the string abc in all .txt files in the current directory and subdirectories

for /r . %%i in (.) do echo %%~pni Display the current directory name and all subdirectory names, including the path, not including the drive letter

for /r d:\mp3 %%i in (*.mp3) do echo %%i>>d:\mp3.txt Save the file names of mp3 files in d:\mp3 and its subdirectories to d:\mp3.txt

for /l %%i in (2,1,8) do echo %%i Generate a series of numbers 2345678, 2 is the start of the number sequence, 8 is the end, 1 means add 1 each time

for /f %%i in ('set') do echo %%i Loop and call the output result of the set command, one line at a time

for /f "eol=P" %%i in ('set') do echo %%i Take the output result of the set command and ignore the lines starting with P

for /f %%i in (d:\mp3.txt) do echo %%i Display each file name in d:\mp3.txt, one line at a time, does not support names with spaces

for /f "delims=" %%i in (d:\mp3.txt) do echo %%i Display each file name in d:\mp3.txt, one line at a time, supports names with spaces

for /f "skip=5 tokens=4" %%a in ('dir') do echo %%a For the result of the dir command, skip the first 5 lines, and take the 4th column of the remaining lines
The delimiter between columns is the default "space"
You can notice that the first 5 lines of the dir command output have no file names

for /f "tokens=1,2,3 delims=- " %%a in ('date /t') do (
echo %%a
echo %%b
echo %%c
)
For the output result of date /t, take columns 1, 2, 3 of each line
The first column corresponds to the specified %%a, and the subsequent %%b and %%c are derived, corresponding to other columns
The delimiter is specified as - and "space", note that there is a "space" after delims=-
Among them, tokens=1,2,3 can be replaced with tokens=1-3, and the effect is the same

for /f "tokens=2* delims=- " %%a in ('date /t') do echo %%b Take the 2nd column for %%a, and all subsequent columns for %%b

### 32 subst (External Command) Map Disk.
subst z: \\server\d # In this way, entering z: can access \\server\d
subst z: /d # Cancel this mapping
subst # Display all current mappings

### 38 xcopy (External Command) File Copy
xcopy d:\mp3 e:\mp3 /s/e/i/y Copy the d:\mp3 folder, all subfolders and files to e:\, overwrite existing files
Add /i means if e:\ does not have an mp3 folder, it will be created automatically, otherwise there will be a query

### 39 Some Less Commonly Used Internal Commands
>& Write the output of one handle to the input of another handle
<& Read input from one handle and write it to the output of another handle
shift When there are more than 9 parameters passed to the batch file from the command line, use it to switch parameters
color Set the display color of the cmd window
pormpt Change the command prompt symbol, the default is all drive letter:\path\>, such as c:\>

### 40 format (External Command) Format Hard Disk
format c: /q/u/autotest
/q means quick format, /autotest means automatic format, no need to press Y to confirm
/u means overwrite the hard disk data with F6 per byte, making it unavailable for software recovery

format c: /c Format drive C and detect bad sectors

### 41 fdisk (External Command) Hard Disk Partition
win2000 does not bring this command
fdisk in win98 does not support large hard disks above 80G, fdisk in winme supports

fdisk/mbr Rebuild the hard disk partition table, generally used to clear the boot sector virus and restore the spirit
Note that when using this command, you cannot boot from the hard disk, you must start directly from the floppy disk or CD-ROM

### 42 ping (External Command)
ping -l 65500 -t 192.168.1.200 Continuously send packets with a size of 65500byte to the computer 192.168.1.200

ping -n 10 127.0.0.1>nul Ping yourself 10 times, which can be used for batch processing delay of 10 seconds

### 43 SC (External Command) Service Control Command
sc create aaa displayname= bbb start= auto binpath= "C:\WINDOWS\System32\alg.exe"
Create a service, service name aaa, display name bbb, startup type: automatic
Path of executable file "C:\WINDOWS\System32\alg.exe"

sc description aaa "ccc" Change the description of aaa to ccc

sc config aaa start= disabled binpath= "C:\WINDOWS\System32\svchost.exe -k netsvcs"
Change the startup type of aaa: disabled
Change the path of the executable file of aaa "C:\WINDOWS\System32\svchost.exe -k netsvcs"

sc config aaa start= demand displayname= ddd
Change the startup type of aaa: manual
Change the display name of aaa ddd

sc start aaa Start the aaa service

sc stop aaa Stop the aaa service

sc delete aaa Delete the aaa service
Floor2 luckboy45 Posted 2008-02-14 19:51
中级用户 Posts 212 Credits 487
Why isn't a good thing getting any support? If I don't support you, then who will? Definitely supporting a great post!~
Floor3 babyyang1213 Posted 2008-02-14 21:23
初级用户 Posts 12 Credits 23
Support
Floor4 yxii001 Posted 2008-02-15 00:22
新手上路 Posts 9 Credits 18
Floor5 cndidong Posted 2008-02-15 12:44
新手上路 Posts 7 Credits 14
There are things I don't know for sure, thank you...
Floor6 45812822 Posted 2008-02-15 12:53
新手上路 Posts 2 Credits 4
Floor7 fyunq Posted 2008-02-15 21:18
新手上路 Posts 3 Credits 6
Not bad, new here, thanks!
Floor8 wxcute Posted 2008-02-16 06:54
中级用户 Posts 211 Credits 458
Sort it out, it's a bit messy.
Floor9 523066680 Posted 2008-02-16 11:57
银牌会员 Posts 1,133 Credits 2,362
If you think it's good, please add points! Collect!
Floor10 regvip2008 Posted 2008-02-16 12:20
初级用户 Posts 87 Credits 187
Floor11 wangguan2003 Posted 2008-02-21 19:41
新手上路 Posts 3 Credits 6
Floor12 xmi Posted 2008-02-21 20:40
初级用户 Posts 56 Credits 125
Support
Floor13 fengjing001 Posted 2008-02-24 23:16
初级用户 Posts 37 Credits 69
As a newbie, I'm very grateful. Add one point ^_^.
Floor14 wangchixiao Posted 2008-03-26 15:17
新手上路 Posts 6 Credits 12
It's really a good thing, thanks to the landlord!
Floor15 dslz666 Posted 2008-03-27 01:52
中级用户 Posts 117 Credits 233
Good post, very suitable for our beginners to learn, thank you
1 2  Next
[ Contact the Union admin team - 中国DOS联盟 - Standard version ]
Sponsored by ifanr Inc | © 2001–2023