Batch file 如何在地址中正确设置%UserProfile%

Batch file 如何在地址中正确设置%UserProfile%,batch-file,Batch File,如果我有调用C:\Users\user\Desktop\Main\folder\edit.bat 设置此项的正确方法是什么: 我想消除C:\Users\user\Desktop,并使我的批处理具有通用性,这样我就可以插入任何计算机,从usb或外部运行它,或者简单地将我的批处理添加到任何计算机的桌面上。并运行它,而无需再次编辑源或目标 如果我想让它在任何计算机上运行我的edit.bat,我是这样设置的吗 调用%SystemRoot%\Main\folder\edit.bat 或 调用%UserPr

如果我有
调用C:\Users\user\Desktop\Main\folder\edit.bat

设置此项的正确方法是什么: 我想消除
C:\Users\user\Desktop
,并使我的批处理具有通用性,这样我就可以插入任何计算机,从usb或外部运行它,或者简单地将我的批处理添加到任何计算机的桌面上。并运行它,而无需再次编辑源或目标

如果我想让它在任何计算机上运行我的edit.bat,我是这样设置的吗

调用%SystemRoot%\Main\folder\edit.bat


调用%UserProfile%\Desktop\Main\folder\edit.bat


调用%UserProfile%\Main\folder\edit.bat

如果我正确理解Mofi,我可以更改此设置

调用“C:\Users\user\Desktop\Main\folder\edit.bat”
Original
对此
调用“C:\users\%username%\Desktop\Main\folder\edit.bat”
工作
对此
调用“%UserProfile%\Desktop\Main\folder\edit.bat”
有效

谁能告诉我这是不是正确的

调用“%~dp0\edit.bat”

如果要在便携式驱动器中打开文件,可以执行以下操作


%~d0\folder\folder\file

如果我正确理解了您的问题,您希望将.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上整洁有序

如果不存在
检查目录
mkdir
创建目标目录。很明显,但仍然如此

%~dp0
定义.bat文件所在的工作目录。了解更多信息

默认情况下,
%userprofile%
环境变量等于目录
C:\users\%username%\
,并且
%computername%
扩展为计算机名称

xcopy
获取源目录并复制到我们之前创建的目的地
/Y
强制复制,不提示覆盖文件

*
是一个通配符。为了这个,还有这个剧本里的所有东西。请注意,通配符只能在目录的端使用。类似于
C:\users\*\desktop\*\files\*
的内容将无法解析。对于类似的内容,您需要使用
For/D

最后,我总是喜欢检查错误,看看是否成功。如果没有,我们将暂停以确保看到错误,或者我们将超时/t秒以查看成功

编辑


为路径设置变量,以说明用户名中的空格,并修复了原始脚本中引起我注意的几个其他错误。

键入
Set
以查看其含义。打开、运行
Set
和显示都是为您的用户帐户定义的。运行
set user
仅显示名称以
user
开头的环境变量<代码>%userprofile%\main\folder\files“带双引号的选项适用于引用文件夹。请同时运行
call/?
并阅读输出帮助。它解释了如何引用批处理文件的参数。参数0是批处理文件本身
%~dp0
引用批处理文件路径。如果要从与主批处理文件存储在同一目录中的主批处理文件中调用另一个批处理文件,如
edit.bat
,则
调用“%~dp0edit.bat”
是正确的命令行。请注意,
%~dp0
总是扩展到以反斜杠结尾的批处理文件目录路径。因此,与文件/文件夹名称或通配符模式的连接应在不使用额外反斜杠的情况下完成,因为这会导致整个参数字符串中出现两个串联反斜杠,Windows在访问文件系统时必须通过将
\\\
替换为
\
@Mofi非常感谢每个人我都会把它放在一起,但我想我现在有了它,我会跟进它是否工作正常以便从便携式驱动器加载,这是否也适用于本地C:桌面,或者我需要使用%userprofile%\folder\folder\fileOK以便从usb上运行它会是这样的
调用%%d0\Main\folder\edit.bat