如何编写接收3个参数并写入用户桌面文件的批处理脚本?
批处理脚本:接收参数并写入用户桌面文件
我来帮你实现这个批处理脚本,完美满足你的需求:接收-p1=xxx格式的三个参数,逐行写入当前用户桌面的output.txt文件。
完整脚本代码
@echo off setlocal enabledelayedexpansion :: 初始化参数变量,避免残留值干扰 set "p1=" set "p2=" set "p3=" :: 遍历并解析命令行参数 for %%a in (%*) do ( set "arg=%%a" :: 提取-p1=后的内容 if "!arg:~0,4!"=="-p1=" set "p1=!arg:~4!" :: 提取-p2=后的内容 if "!arg:~0,4!"=="-p2=" set "p2=!arg:~4!" :: 提取-p3=后的内容 if "!arg:~0,4!"=="-p3=" set "p3=!arg:~4!" ) :: 获取当前用户的桌面路径(默认方式,兼容绝大多数场景) set "desktop_path=%USERPROFILE%\Desktop" :: 如果你需要适配用户自定义桌面位置的场景,可以替换上面的行为以下代码: :: for /f "tokens=3" %%b in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v Desktop ^| findstr /i desktop') do set "desktop_path=%%b" :: set "desktop_path=%desktop_path:%%=%" :: 将参数逐行写入桌面的output.txt文件 echo !p1! > "%desktop_path%\output.txt" echo !p2! >> "%desktop_path%\output.txt" echo !p3! >> "%desktop_path%\output.txt" echo 操作完成!文件已写入:"%desktop_path%\output.txt" endlocal
关键部分解释
- 参数解析:通过
for循环遍历所有命令行参数,判断参数前缀是否为-p1=/-p2=/-p3=,提取等号后的内容赋值给对应变量。开启enabledelayedexpansion是为了在循环内动态修改和读取变量值。 - 桌面路径获取:
- 默认用
%USERPROFILE%\Desktop,这是Windows系统默认的桌面路径环境变量,简单可靠。 - 如果用户自定义了桌面位置(比如转移到其他磁盘),可以注释掉默认行,启用注册表查询的代码,它会读取系统中实际设置的桌面路径。
- 默认用
- 文件写入:第一个
echo用>创建新文件(如果已有同名文件会覆盖),后面的echo用>>追加内容,确保三个参数逐行写入。
使用方法
- 将上述代码保存为
WriteFile.bat文件,比如放在D:\Temp目录下。 - 打开命令提示符,运行:
D:\Temp\WriteFile.bat -p1=aaa -p2=bbb -p3=ccc - 打开当前用户的桌面,就能看到生成的
output.txt,内容为:aaa bbb ccc
注意事项
- 如果参数包含空格,需要用引号包裹,比如
-p1="Hello World",脚本会正确保留空格内容。 - 如果某个参数未提供,对应的行会是空行(因为变量初始化为空)。
内容的提问来源于stack exchange,提问作者odiseo




