Web开发:总结常见的批处理脚本(.bat)

张开发
2026/4/9 23:32:05 15 分钟阅读

分享文章

Web开发:总结常见的批处理脚本(.bat)
一、复制1.批量复制文件echo off setlocal set source01.png copy %source% a.png copy %source% b.png copy %source% c.png pause endlocal说明将上述代码复制到一个新的文本文件中。将文件保存为xxx.bat。将这个.bat文件放在包含01.png的目录下。双击运行该批处理文件它会在同一目录下生成a.png、b.png和c.png。2.批量复制文件夹场景我需要在E:\demo\ConsoleApp目录下根据Debug目录复制7个文件夹文件夹名称为Debug1,Debug2,Debug3,Debug4,Debug5,Debug6,Debug7 效果 E:\demo\ConsoleApp\ ├── Debug\ ├── Debug1\ ├── Debug2\ ├── Debug3\ ├── Debug4\ ├── Debug5\ ├── Debug6\ ├── Debug7\bat脚本echo off setlocal enabledelayedexpansion set sourceE:\demo\ConsoleApp\Debug :: 设置要复制的文件夹数量 set count3 :: 循环并根据数量复制文件夹 for /L %%i in (1,1,%count%) do ( set target!source!-%%i xcopy !source! !target! /e /i /h /y ) echo 复制完成 pause效果实际应用将当前目录下的publish文件夹和dist文件夹备份到指定路径下例是F:\backup\今日日期echo off setlocal enabledelayedexpansion :: 获取当前日期格式为YYYYMMDD for /f tokens2 delims %%a in (wmic os get localdatetime /value) do set datetime%%a set today!datetime:~0,8! :: 定义备份目标路径 set backup_rootF:\backup set backup_dir!backup_root!\!today! :: 创建备份目录如果不存在 if not exist !backup_root! mkdir !backup_root! if not exist !backup_dir! mkdir !backup_dir! :: 备份publish文件夹 if exist publish ( echo 正在备份 publish 文件夹... xcopy publish !backup_dir!\publish\ /E /H /R /Y /I if !errorlevel! equ 0 ( echo publish 文件夹备份成功 ) else ( echo publish 文件夹备份失败 ) ) else ( echo 未找到 publish 文件夹跳过备份 ) :: 备份dist文件夹 if exist dist ( echo 正在备份 dist 文件夹... xcopy dist !backup_dir!\dist\ /E /H /R /Y /I if !errorlevel! equ 0 ( echo dist 文件夹备份成功 ) else ( echo dist 文件夹备份失败 ) ) else ( echo 未找到 dist 文件夹跳过备份 ) echo 备份操作完成 endlocal pause二、删除1.删除文件示例删除当前目录下的.\bin\Content\config.txt文件echo off del bin\Content\config.txt echo 已删除 bin\Content\config.txt文件。 pause2.删除文件夹示例删除当前目录下的.\bin\Content文件夹包括其中的所有文件和子文件夹echo off rd /s /q bin\Content echo 已删除 bin\Content 文件夹及其内容。 pause三、执行指定目录下的cmd命令①例子一python打包例如我想在某目录执行cmd命令pyinstaller -F -w -i tool.ico main.py --upx-dir F:\python解释器\upx\upx-4.1.0-win64我可以在执行命令的目录下写一个bat并且双击运行这个bat文件echo off pyinstaller -F -w -i tool.ico main.py --upx-dir F:\python解释器\upx\upx-4.1.0-win64 pause模板echo off 你的命令 pause当然如果不在该目录创建bat可以指定目录echo off cd /d C:\path\to\your\directory 你的命令 pause如果你需要输出到txt文件而不是控制台echo off cd /d C:\path\to\your\directory 你的命令 %~dp0data.txt 21 pause②例子二python运行echo off python main.py pause若出现缺包补上即可四、.NET下面所有的命令都在工程文件.csproj目录下cmd执行发布Nuget除外1.运行项目-- 1.运行一个项目 dotnet run -- 2.启动一个 WebAPI 服务并指定控制台标题在指定的端口19999上监听appsetting.json的urls监听端口无效%~dp0表示在当前目录下 title demo-services %~dp0Demo.HttpApi.Host.exe --urlshttp://*:19999 pause2.发布项目使用如下方式进行打包会把运行时和依赖也打包进去解压publish文件夹双击exe即可运行若不能正常运行如“could not load file or assembly microsoft.win32.registry”把整个Release文件夹放上去然后到./Release/publish文件夹下双击exe即可dotnet publish -c Release -r win-x64 --self-contained true -o ./bin/Release/publish pause上述打包命令普遍适用但是有更严谨、完美的打包命令增加了删除现有文件和指定框架版本避免环境依赖问题del /Q .\bin\Release\publish\* dotnet publish -c Release -r win-x64 --self-contained true -f netcoreapp3.1 -o ./bin/Release/publish pause3.打包Nugetdotnet pack pause4.发布Nuget此命令需在【.nupkg】文件目录下执行nuget push *.nupkg -ApiKey YOUR_API_KEY -Source https://api.nuget.org/v3/index.json pause五、一键打开多个文件/文件夹echo off start C:\Users\YourName\Documents\example.txt start C:\Users\YourName\Documents\image.jpg start C:\Users\YourName\Documents\example.pdf start C:\Users\YourName\Documents exit六、发起CURL请求需借助powershell双击bat即可发送指定url的请求echo off powershell -ExecutionPolicy Bypass -Command Invoke-RestMethod -Uri http://127.0.0.1:5050/api/books/GetData -Method Post | Out-String -Width 4096 pause七、bat常见问题1.工作目录是C盘原因双击运行 bat 时默认工作目录是 bat 所在位置但有些场景会变成 C:\Windows\System32解决cd /d %~dp02.编码问题原因bat 编码为 UTF-8 无 BOM。解决解决记事本另存为 → 编码选 ANSI

更多文章