【1】变量使用,获取当前年月日
net use Z: \192.168.135.1share_linux a123456! /user:chaoqun.guo set bath=c:backup set today=%date:~0,4%%date:~5,2%%date:~8,2% ::%date:~0,4%,表示从第0下标开始获取4位长度的值 set db_name=test set filename=%db_name%%today% path="C:Program FilesWinRAR" winRAR a %bath%%filename%.rar %bath%%filename%.bak copy %bath%%filename%.rar \192.168.135.1share_linux /Y net use \192.168.135.1share_linux /delete
【2】DOS/sql server下使用net use
Rem dos net use Z: \192.168.135.1share_linux a123456! /user:chaoqun.guo net use \192.168.135.1share_linux /delete Rem sql server EXEC sp_configure 'show advanced options',1; RECONFIGURE WITH OVERRIDE; EXEC sp_configure 'xp_cmdshell',1; RECONFIGURE WITH OVERRIDE EXEC master.dbo.xp_cmdshell 'net use x: \219.129.239.217master_1_temp "AO%7Ro*AD35@bTa" /user:"7RoAdmin"'
【3】如何写注释?Rem
Rem 注释内容
【4】快速把 bat 安装成定时任务
/* --ddt_db_backup_install.bat @echo off color 2 echo. echo ----------------- ddt_db_backup_install -------------------- echo ----------------- ddt_db_backup_install -------------------- > install.log echo. schtasks /delete /TN ddt_db_backup /F schtasks /delete /TN ddt_db_bakcup /F schtasks /create /ru SYSTEM /tn "ddt_db_backup" /tr "C:shellddt_db_bakcup.bat" /sc daily /st 06:10:00 /F IF ERRORLEVEL 1 (ECHO Error: ddt_db_backup install error ECHO Error: ddt_db_backup install error >> install.log 2>&1 goto error) echo OK echo OK >> install.log 2>&1 :ok echo. echo ------------------- Install Success --------------------- ping -n 2 127.1>nul ping -n 2 127.1>nul ping -n 2 127.1>nul goto end :error echo. echo. ping -n 2 127.1>nul ping -n 2 127.1>nul ping -n 2 127.1>nul ping -n 2 127.1>nul ping -n 2 127.1>nul ping -n 2 127.1>nul ping -n 2 127.1>nul ping -n 2 127.1>nul ping -n 2 127.1>nul exit 1 :end exit */ /* --ddt_db_backup.bat --add the code for delete override files if exist F:Db_Tank_Back (set data_path=F:Db_Tank_Back) else if exist E:Db_Tank_Back (set data_path=E:Db_Tank_Back) else (if exist D:Db_Tank_Back (set data_path=D:Db_Tank_Back) ) forfiles /p %data_path% /s /m *.7z /d -7 /c "cmd /c del @path" */
【5】不换行打印输出
set /p="测试引擎服务是否启动......"<nul
【6】上一条命令执行成功与否 errorlevel
1为失败,0为成功
echo 开始重命名数据库/创建数据库...... set /p="开始重命名数据库/创建数据库......"<nul >>%logfile% sqlcmd -S 127.0.0.1,1433 -i 1_DB_renameAndCreate.sql -E -b 2>>%errorfile% 1>db_log_%today%.log IF ERRORLEVEL 1 echo fail......请检查db_log_%today%.log 文件>>%logfile% IF ERRORLEVEL 0 echo ok>>%logfile%
ERRORLEVEL 与 %ERRORLEVEL % 的区别
IF ERRORLEVEL 1 ( command ) 与 IF %ERRORLEVEL% LEQ 1 ( command ) 等效
也就是 ERRORLEVEL 1 等效于 “大于等于”
环境变量的比较符号可以使用的有:
● EQU - 等于
● NEQ - 不等于
● LSS - 小于
● LEQ - 小于或等于
● GTR - 大于
● GEQ - 大于或等于
【7】如何复制文件到一个文件夹下,重复则跳过?replace
官网:https://docs.microsoft.com/zh-cn/windows-server/administration/windows-commands/replace
使用replace,可以完成这个功能。
形式:replace /a source_dir* des_dir
举例:replace /a d: emp_bak* d:copy_file
source_dir:为源文件夹
des_dir:为目标文件夹
【8】bat中的for,执行指定次数
(1)执行6次循环 如果只要循环6次的话 for /l %%i in (1,1,6) do就可以了。 (2)处理文本 要循环处理文本文件的话 for /f %%i in (a.txt) do
(3)在循环中运行多个命令 for %%i in (resource1 ^ resource2 ^ resource3 ^ resource4) ^ do ( echo %%i XCOPY /Y /S /q %%i %OFFICE_DIR% )
【9】bat中使用timeout来做等待
TIMEOUT [/T] timeout [/NOBREAK] 描述: 这个工具接受超时参数,等候一段指定的时间(秒)或等按任意键。它还接受一个参数,忽视按键。 参数列表: /T timeout 指定等候的秒数。有效范围从 -1 到 99999 秒。 /NOBREAK 忽略按键并等待指定的时间。 /? 显示此帮助消息。 注意: 超时值 -1 表示无限期地等待按键。