每周,我必须使用我们飞机的出版物更新我们的计算机。我通过创建一个批处理文件来简化流程,该文件自动删除旧的出版物并打开存储它们的文件夹,因此我不必深入挖掘它。每周存储出版物的位置是相同的。我的批处理文件如下所示......
del /s /f "C:\Users\Public\Desktop\PubFolder\Pub.pdf"
所以基本上我所要做的就是在运行批处理文件删除所有出版物后,将PubFolder从我的USB驱动器复制到公共桌面。
如果我们所有的计算机完全相同,这将是一个简单的解决方法,因为我可以在批处理文件中写入
xcopy /y D:\PubFolder" "C:\Users\Public\Desktop\PubFolder"
脚本将为我完成所有工作。我的问题是,许多计算机上安装了不同的软件,需要HDD中的分区。其中一些有3个,有些2个,有些1.
基本上我需要的是当我从USB运行批处理文件时,它使用批处理文件的位置作为目录,以便我可以从那里复制。
答案 0 :(得分:1)
cmd脚本(.bat文件)可以使用%~dp0
使用FOR /?
在您使用它时,一些额外的错误检查可能会使某些情况更容易从中恢复。
SETLOCAL
SET "EXITCODE=0"
SET "USERDIR=%PUBLIC%\Desktop\PubFolder"
IF NOT EXIST "%USERDIR%" (
ECHO ERROR: The user publication directory "%USERDIR%" does not exist.
SET EXITCODE=4
GOTO TheEnd
)
IF EXIST "%USERDIR%\Pub.pdf" (DEL "%USERDIR%\Pub.pdf")
xcopy /y %~dp0PubFolder" "%USERDIR%"
SET "EXITCODE=%ERRORLEVEL%"
IF %EXITCODE% NEQ 0 (
ECHO ERROR: Failed to copy from "%~dp0" to "%USERDIR%"
SET EXITCODE=5
GOTO TheEnd
)
:TheEnd
EXIT /B %EXITCODE%
答案 1 :(得分:0)
@setlocal
REM If you have pre-Vista machines, uncomment the folowing line:
REM @if not defined PUBLIC set PUBLIC=%SYSTEMDRIVE%\Users\Public%
@xcopy /y %~d0\PubFolder %PUBLIC%\Desktop\PubFolder