batch-file - 如何正确设置地址中的 %UserProfile%
问题描述
如果我有call C:\Users\user\Desktop\Main\folder\edit.bat
设置这个的正确方法是什么:我想消除C:\Users\user\Desktop
,并使我的批处理通用,以便我可以插入任何计算机,从 USB 或外部运行它,或者只是将我的批处理添加到任何人计算机的桌面. 无需再次编辑源或目标即可运行它。
如果我想让它从任何计算机上运行我的edit.bat,我是否像这样设置它
call %SystemRoot%\Main\folder\edit.bat
或
call %UserProfile%\Desktop\Main\folder\edit.bat
或
call %UserProfile%\Main\folder\edit.bat
如果我理解 Mofi 正确,我可以改变这个
call "C:\Users\user\Desktop\Main\folder\edit.bat"
本
call "C:\users\%username%\Desktop\Main\folder\edit.bat"
作品
及本
call "%UserProfile%\Desktop\Main\folder\edit.bat"
作品原创
谁能告诉我这是否正确
call "%~dp0\edit.bat"
解决方案
如果我正确理解您的问题,您希望将 .bat 放在 USB 上,插入并运行它,然后将文件从目录复制到 USB。在这种情况下,下面的简单脚本将起作用。假设您在客户端上选择的路径是静态的并且不会变化,例如%userprofile%\desktop\
或%userprofile%\documents\
。
@echo off
REM This .bat file will be on the USB drive.
set "usb=%~dp0"
set "new_path=%usb%%computername%\%username%"
if not exist "%new_path%" mkdir "%new_path%"
xcopy "%userprofile%\main\folder\files\*" "%new_path%\" /Y
if errorlevel 1 (
echo ERROR OCCURRED - %ERRORLEVEL%
pause
exit /b
)
echo Successfully copied files to "%new_path%"
timeout /t 3
exit /b
解释
首先,我们在闪存驱动器上创建一个目录,如果它不存在,那么所有文件都整齐有序地放在 USB 上。
if not exist
检查目录。mkdir
创建目标目录。很明显,但仍然如此。
%~dp0
定义 .bat 文件所在的工作目录。欲了解更多信息这是一个很棒的帖子。
%userprofile%
环境变量默认等于 directory C:\users\%username%\
,并%computername%
扩展为计算机的名称。
xcopy
获取源目录并复制到我们之前创建的目的地。/Y
强制复制并且不提示覆盖文件。
*
是通配符。这是一个很好的网站,也是这个脚本中的所有内容。请注意,通配符只能用在目录的末尾。类似的东西C:\users\*\desktop\*\files\*
不会解决。对于类似的事情,您需要使用for /D
.
最后,我总是喜欢检查错误,看看它是否成功。如果不是,我们pause
确保我们看到错误,或者我们输入 atimeout /t seconds
看到成功。
编辑
设置路径变量以考虑用户名中的空格,并修复了原始脚本中引起我注意的几个其他错误。
推荐阅读
- django - Django 视频流
- flutter - 如何获取知道电子邮件用户的 Firebase UID?
- javascript - Vue 模板:如何自动将自定义属性添加到具有 v-on:click 指令的元素
- javascript - TypeError:message.guild.channels.cache 不是函数
- python - 概率分布图
- java - Servlet页面显示源代码而不是图像
- javascript - 将额外的参数传递给函数 checkNotAuthenticated
- python - selenium python 点击获取数据按钮
- julia - 通过选择使用 PyPy3 而不是 Cpython3 运行我的软件,我会消耗更少的电力吗?
- python - 允许 OAuth2 登录委派给受 Kerberos 保护的资源