rem 注释~~
echo hello world
%1 %2
,第n个变量就用%n
表示%~dp0
%cd%
set currentPath=%cd%
@echo off
//隐藏执行路径,@表示包含echo off这条命令也不现实路径pause
start xxx.exe
call start xxx.exe
cd /d 路径
dir /b /a:d
dir /b /a:-d
cmd1&cmd2
,在cmd1执行成功后执行cmd2xcopy 要复制的目录 目标目录 /s /e /Q /Y /I
保存:set currentPath=%cd%
输出:echo %currentPath
if /i %1 == ab (echo success) else (echo %1)
if not exist %cd%\logs md %cd%\logs
for /f "delims=" %%i in ('dir /b .\') do echo %%i
这个默认如果对变量进行赋值打印(
echo %变量%
)出来的结果始终是第一次的赋值结果, 若要对局部变量赋值则需要启用延迟环境变量扩展(setlocal enabledelayedexpansion
) 将其添加到头部后,对变量赋值,然后输出:echo !变量名!
。符号由%变更为!
rem 输出当前目录下的文件文件夹
@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%i in ('dir /b .\') do (
set temp=%%i
echo !temp!
)
@echo off
setlocal enabledelayedexpansion
set str="a+b+c-d"
:Step1
for /f "delims=-+, tokens=1,*" %%a in (%str%) do (
REM todo case a b c d...
echo %%a
REM 重新赋值并跳转到GOON
set str="%%b"
goto Step1
)
分割后的第一个
@echo off
setlocal enabledelayedexpansion
set str="a;b;c"
for /f "delims=;, tokens=1,*" %%a in (%str%) do (
set s= %%a
echo "first:!s!"
)
停止:C:\Windows\System32\inetsrv\appcmd.exe stop site 网站名称
启动:C:\Windows\System32\inetsrv\appcmd.exe start site 网站名称
或者通过写入/删除app_offline.htm
通过写入app_offline.htm
文件,请求重定向到此文件解决进程占用问题,发布完成后删除文件请求进入core网站。
将脚本放到core项目的文件夹,路径自行修改,默认输出项目在src/UI文件夹中。打包文件在当前目录的release文件夹下
@echo off
:: 变量赋值,使用!name!
setlocal enabledelayedexpansion
set currentPath=%~dp0
set tempModulesPath=%currentPath%\temp
set modulesPath=%currentPath%\src\UI\
set str="项目名称1+项目名称2"
:GOON
for /f "delims=,+, tokens=1,*" %%i in (%str%) do (
echo --------------------------------------------------------
echo 【%%i】发布开始
set path1=%modulesPath%%%i
set path2=%currentPath%\release\%%i\
set filnePath=!path2!app_offline.htm
echo !path1!
echo 停止【%%i】站点
if not exist !path2! md !path2!
cd /d !path1!
echo 执行发布【!path2!】
echo 网站维护中>!filnePath!
call dotnet publish -o !path2!
call xcopy %tempModulesPath% !path2! /s /e /Q /Y /I
del !filnePath!
echo 开启【%%i】站点
echo 【%%i】发布完成
set str="%%j"
goto GOON
)
pause