Bootstrap

bat文件的进阶用法示例10条


下面列举了一些进阶的BAT文件使用场景,包括启动各种应用和脚本,并带有参数的示例,可以更深入地展示BAT文件的多样性和强大功能。

1. 启动应用程序

场景:使用BAT文件启动一个应用程序,比如启动Notepad。

代码示例

@echo off
start notepad.exe

2. 启动特定的应用程序(如Adobe Reader)

场景:启动特定的应用程序并打开特定的文件,例如Adobe Reader打开一个PDF文件。

代码示例

@echo off
start AcroRd32.exe C:\path\to\your\file.pdf

3. 启动Python脚本

场景:使用BAT文件运行Python脚本。

代码示例

@echo off
python C:\path\to\your\script.py

如果需要带参数运行:

@echo off
python C:\path\to\your\script.py arg1 arg2

4. 启动JavaScript脚本

代码示例

@echo off
node C:\path\to\your\script.js

如果需要带参数运行:

@echo off
node C:\path\to\your\script.js arg1 arg2

解析

  • @echo off:这条命令用于关闭命令行的回显功能,使得在执行BAT文件时,命令本身不会显示在命令行窗口中,只显示命令的输出结果,使得输出结果更为清晰。
  • node C:\path\to\your\script.js:这条命令用于调用node命令来执行指定路径下的JavaScript文件。这里的node是Node.js的命令行工具,用于运行JavaScript代码。这需要在系统上预先安装Node.js。

如果需要带参数运行的情况:

  • node C:\path\to\your\script.js arg1 arg2:在基本的命令后添加参数arg1arg2。这些参数会被传递到JavaScript脚本中,可以在脚本内通过process.argv数组访问它们。在Node.js中,process.argv[0]node命令的路径,process.argv[1]是执行的脚本文件路径,process.argv[2]及之后的位置是传入的参数。

这个BAT文件非常适合用于自动化运行Node.js项目的脚本,比如自动化测试、数据处理任务或其他需要定期执行的JavaScript代码。通过这种方式,可以轻松地集成JavaScript逻辑到Windows的自动化任务中,利用Node.js的强大功能来扩展BAT文件的应用场景。

5. 结合Windows PowerShell使用

代码示例

@echo off
PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& 'C:\path\to\your\script.ps1'"

解析

  • @echo off:关闭命令行的回显功能,这样执行时就不会在命令行窗口中显示执行的命令,使输出更干净。
  • PowerShell -NoProfile -ExecutionPolicy Bypass:启动PowerShell,并通过-NoProfile来跳过加载个人配置文件,-ExecutionPolicy Bypass用于绕过默认的执行策略限制,允许执行未签名的脚本。
  • -Command "& 'C:\path\to\your\script.ps1'":通过-Command指定要执行的具体PowerShell命令或脚本。这里使用&(调用运算符)来执行指定路径下的.ps1脚本。

如果需要带参数运行:

@echo off
PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& 'C:\path\to\your\script.ps1' -Param1 'value1' -Param2 'value2'"
  • 在上述脚本的基础上,通过在调用.ps1脚本时传递参数-Param1-Param2,可以使得PowerShell脚本根据这些参数进行相应的操作。

6. 复杂的逻辑处理和错误检查

代码示例

@echo off
call script1.bat
if %ERRORLEVEL% neq 0 goto error
call script2.bat
if %ERRORLEVEL% neq 0 goto error
echo Both scripts executed successfully.
goto end

:error
echo An error occurred during execution.
exit /b %ERRORLEVEL%

:end

解析

  • @echo off:同上,关闭命令行的回显。
  • call script1.bat:调用另一个BAT文件script1.bat执行。
  • if %ERRORLEVEL% neq 0 goto error:检查script1.bat执行后的错误级别(ERRORLEVEL),如果不等于0(表示出错),则跳转到标签:error
  • call script2.bat:在script1.bat执行成功后调用script2.bat
  • if %ERRORLEVEL% neq 0 goto error:同样检查script2.bat的执行状态,如有错误则跳转。
  • echo Both scripts executed successfully.:如果两个脚本都成功执行,输出成功消息。
  • goto end:跳转到脚本结束标签,防止执行错误处理部分。
  • :error:错误处理部分的标签。
  • echo An error occurred during execution.:输出错误信息。
  • exit /b %ERRORLEVEL%:退出脚本并返回错误代码,/b标志表示退出当前批处理脚本而不是整个命令窗口。
  • :end:正常结束脚本的标签。

7. 自动化网络配置并报告

场景:自动收集网络配置信息并生成报告,然后发送到管理员邮箱。

代码示例

@echo off
ipconfig /all > C:\network_info.txt
blat C:\network_info.txt -to [email protected] -subject "Daily Network Config Report"

解析

  • ipconfig /all > C:\network_info.txt:收集详细的网络配置信息并输出到一个文本文件。
  • blat C:\network_info.txt -to [email protected] -subject "Daily Network Config Report":使用Blat(一个Windows下的命令行邮件发送工具)发送这个报告给管理员。

8. 复杂的系统维护脚本

场景:执行一系列系统维护任务,如清理临时文件、更新系统、检查磁盘空间,然后重启系统。

代码示例

@echo off
del /s /q C:\Windows\Temp\*
schtasks /run /tn "UpdateTask"
fsutil volume diskfree c:
shutdown /r /t 300 /c "Scheduled maintenance complete, restarting in 5 minutes."

解析

  • del /s /q C:\Windows\Temp\*:删除Windows临时目录下的所有文件。
  • schtasks /run /tn "UpdateTask":执行一个预先设定的任务计划器任务来更新系统。
  • fsutil volume diskfree c::检查C驱动器的剩余空间。
  • shutdown /r /t 300 /c "Scheduled maintenance complete, restarting in 5 minutes.":在完成维护后,设置系统在5分钟后重启。

9. 定时数据库备份

场景:使用BAT文件定时备份数据库,并将备份文件存储到指定位置。

代码示例

@echo off
set BACKUPFILE=Backup_%date:~10,4%-%date:~4,2%-%date:~7,2%.bak
sqlcmd -S localhost -Q "BACKUP DATABASE MyDatabase TO DISK='D:\DB_Backups\%BACKUPFILE%'"
echo Database backup completed on %date% at %time% >> D:\DB_Backups\backup_log.txt

解析

  • set BACKUPFILE=Backup_%date:~10,4%-%date:~4,2%-%date:~7,2%.bak:设置备份文件的名称,包含日期以便追踪。
  • sqlcmd -S localhost -Q "BACKUP DATABASE MyDatabase TO DISK='D:\DB_Backups\%BACKUPFILE%'":使用sqlcmd命令备份名为MyDatabase的数据库到指定的路径。
  • echo Database backup completed on %date% at %time% >> D:\DB_Backups\backup_log.txt:将备份完成的时间记录到日志文件中。

10. 批量更新文件权限

场景:批量修改文件夹中所有文件的权限,授予用户读写权限。

代码示例

@echo off
for /R %path% %%G in (*.doc) do icacls "%%G" /grant Users:(M)
echo Permissions updated for all documents in %path%.

解析

  • for /R %path% %%G in (*.doc) do icacls "%%G" /grant Users:(M):遍历指定路径下的所有.doc文件,并使用icacls命令修改权限,允许用户修改文件。
  • echo Permissions updated for all documents in %path%.:完成权限更新后输出信息。

这些示例展示了BAT文件可以如何用于解决实际的业务需求,从简单的任务到复杂的系统维护,都可以通过脚本自动化来高效完成。

;