批处理之家 DOS联盟
以管理员身份运行批处理
fltmc >nul 2>&1 || (
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\GetAdmin.vbs"
echo UAC.ShellExecute "%~f0", "", "", "runas", 1 >> "%temp%\GetAdmin.vbs"
cmd /u /c type "%temp%\GetAdmin.vbs">"%temp%\GetAdminUnicode.vbs"
cscript //nologo "%temp%\GetAdminUnicode.vbs"
del /f /q "%temp%\GetAdmin.vbs" >nul 2>&1
del /f /q "%temp%\GetAdminUnicode.vbs" >nul 2>&1
exit
)
打开文件夹
start "" "c:\windows"
start explorer "c:\windows"
打开.doc文件
start "" "c:\test.doc"
调用 Word 打开 .doc文件
start winword "c:\test.doc"
打开.txt文件
start "" "c:\test.txt"
调用记事本打开 .txt文件
start notepad "c:\test.txt"
登录ftp
start explorer "ftp://10.10.10.106"
自动登录ftp
rem start explorer "ftp://username:password@host"
rem sername:ftp服务器的 用户名
rem password:ftp 服务器 用户名对应的密码
rem host: ftp服务器的ip地址,域名等
start explorer "ftp://user:123@10.10.10.106"
判断系统位数
@echo off
if "%PROCESSOR_ARCHITECTURE%"=="AMD64" (
echo 64位系统
) else (
echo 非64位系统
)
@echo off
if "%PROCESSOR_ARCHITECTURE%"=="x86" (
if not defined PROCESSOR_ARCHITEW6432 echo 32位系统
) else (
echo 64位系统
)
判断系统版本
@echo off
setlocal EnableDelayedExpansion
for /f "tokens=4-5 delims=. " %%i in ('ver') do set VERSION=%%i.%%j
if "%version%" == "5.1" (
echo Windows XP
) else if "%version%" == "6.0" (
echo Windows Vista
) else if "%version%" == "6.1" (
echo Windows 7
) else if "%version%" == "6.2" (
echo Windows 8
) else if "%version%" == "6.3" (
echo Windows 8.1
) else if "%version%" == "10.0" (
echo Windows 10
) else (
echo 未知的Windows版本
)
endlocal
for /f "tokens=4-5 delims=. " %%i in ('ver') do set VERSION=%%i.%%j
这段批处理代码的作用是获取Windows操作系统的版本号。下面是每个部分的解释:
for /f "tokens=4-5 delims=. ":这是一个for循环,用于处理命令ver的输出。tokens=4-5表示选择第4和第5个标记(由空格或点分隔的部分)。
%%i in ('ver'):这表示在ver命令的输出中为每个标记执行循环。ver命令会返回类似于"Microsoft Windows [Version 10.0.19041.867]"的字符串。
do set VERSION=%%i.%%j:这表示将第4个标记(%%i)和第5个标记(%%j)连接起来,并将结果赋值给VERSION变量。
所以,这段代码的作用就是获取Windows的主要版本号和次要版本号,并将它们连接起来。例如,对于Windows 10版本19041.867,这段代码将会返回"10.0"。
setlocal EnableDelayedExpansion
endlocal
setlocal EnableDelayedExpansion和endlocal是Windows批处理脚本中的命令,用于控制环境变量的作用范围和扩展方式。
setlocal EnableDelayedExpansion:这个命令启用命令扩展并启用延迟的环境变量扩展。延迟的环境变量扩展允许在批处理脚本的循环或代码块内部更改和立即读取变量的值。在启用延迟扩展的脚本中,你可以使用!variable!来获取变量的当前值。
endlocal:这个命令用于结束setlocal命令的影响,恢复环境变量的正常设置。在执行setlocal之后所做的环境改动只限于批处理文件。要还原原先的设置,必须执行endlocal。达到批处理文件结尾时,对于该批处理文件的每个尚未执行的setlocal命令,都会有一个隐含的endlocal被执行。
goto命令示例
@echo off
:start
echo Hello, world!
goto end
echo This line will not be displayed.
:end
echo Goodbye!
这个脚本首先定义了一个名为start的标签,然后显示"Hello, world!"。然后,goto end命令使得脚本跳转到名为end的标签,因此"This line will not be displayed."这句话将不会被显示。最后,脚本显示"Goodbye!"并结束。