找不到文件 - 运行 通过 CMD 使用 e:\ 命令找到闪存驱动器上的文件
file not found - running a file located on flashdrive through CMD with e:\ command
我最近在 youtube 上观看了一段视频,其中 运行 在计算机处于启动模式时从他的闪存驱动器中下载了一个批处理文件,虽然质量很差,但我可以看到他正在做类似 e: \ 然后是文件,但是当我尝试这样做时,即使通过桌面上的 cmd,它也一直显示
C:\Users\username>e:\hack //the command
File not found - files //the error
这是我尝试使用的代码 运行:
@echo off
:: variables
SET odrive=%odrive:~0,2%
set backupcmd=xcopy /s /c /d /e /h /i /r /y
%backupcmd% "%drive%\files" "C:\Users\%USERNAME\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup"
pause
pause
就是看有没有错误
批处理文件中的代码无法正常工作,因为引用 %odrive:~0,2%
环境变量 odrive
的前两个字符根本没有定义,至少在批处理文件本身中没有定义.并且 "%drive%\files"
引用了环境变量 drive
的值,该值也未在批处理文件中定义。
发布的整个不工作的批处理文件可以替换为:
@%SystemRoot%\System32\xcopy.exe "%~d0\files" "%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\" /C /D /E /H /I /Q /R /Y >nul
对这个单一命令行的一些评论:
%~d0
在执行期间被包含此单个命令行的批处理文件的驱动器号和冒号替换。
必须有一个子目录 files
,其中包含要在包含批处理文件的驱动器的根目录中复制的文件和文件夹。
将文件和文件夹从 USB 存储介质复制到用户的 Windows 开始 文件夹中的菜单 Startup
用于在 Windows 上自动启动,在用户登录后启动,它应该只包含 *.lnk 文件。这种方法被恶意软件编写者使用,但不被可靠的程序员及其应用程序使用。
绝不能同时使用选项 /E
和 /S
。 /S
用于复制所有带子文件夹的文件,但没有空子文件夹。 /E
用于复制包含所有子文件夹(包括空子文件夹)的所有文件。所以同时指定两者是没有意义的。 /E
在这种情况下由 XCOPY 使用。
如果目标是目录,则目标路径应以反斜杠结尾,以便 XCOPY 100% 清楚目标是目录。选项 /I
在最后指定带有 \
的目标目录时并不是真正需要的。
单个命令行开头的 @
会阻止在 cmd.exe
执行此命令行之前显示此命令行,它会像 @echo off
一样执行批处理文件对于批处理文件中的所有命令。
为了更好地理解所使用的命令行及其工作原理,请打开命令提示符 window,在其中执行以下命令,并仔细阅读为每个命令显示的所有帮助页面。
call /?
... 说明 %~d0
xcopy /?
另请参阅预定义列表 Windows Environment Variables。
我最近在 youtube 上观看了一段视频,其中 运行 在计算机处于启动模式时从他的闪存驱动器中下载了一个批处理文件,虽然质量很差,但我可以看到他正在做类似 e: \ 然后是文件,但是当我尝试这样做时,即使通过桌面上的 cmd,它也一直显示
C:\Users\username>e:\hack //the command
File not found - files //the error
这是我尝试使用的代码 运行:
@echo off
:: variables
SET odrive=%odrive:~0,2%
set backupcmd=xcopy /s /c /d /e /h /i /r /y
%backupcmd% "%drive%\files" "C:\Users\%USERNAME\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup"
pause
pause
就是看有没有错误
批处理文件中的代码无法正常工作,因为引用 %odrive:~0,2%
环境变量 odrive
的前两个字符根本没有定义,至少在批处理文件本身中没有定义.并且 "%drive%\files"
引用了环境变量 drive
的值,该值也未在批处理文件中定义。
发布的整个不工作的批处理文件可以替换为:
@%SystemRoot%\System32\xcopy.exe "%~d0\files" "%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\" /C /D /E /H /I /Q /R /Y >nul
对这个单一命令行的一些评论:
%~d0
在执行期间被包含此单个命令行的批处理文件的驱动器号和冒号替换。必须有一个子目录
files
,其中包含要在包含批处理文件的驱动器的根目录中复制的文件和文件夹。将文件和文件夹从 USB 存储介质复制到用户的 Windows 开始 文件夹中的菜单
Startup
用于在 Windows 上自动启动,在用户登录后启动,它应该只包含 *.lnk 文件。这种方法被恶意软件编写者使用,但不被可靠的程序员及其应用程序使用。绝不能同时使用选项
/E
和/S
。/S
用于复制所有带子文件夹的文件,但没有空子文件夹。/E
用于复制包含所有子文件夹(包括空子文件夹)的所有文件。所以同时指定两者是没有意义的。/E
在这种情况下由 XCOPY 使用。如果目标是目录,则目标路径应以反斜杠结尾,以便 XCOPY 100% 清楚目标是目录。选项
/I
在最后指定带有\
的目标目录时并不是真正需要的。
单个命令行开头的 @
会阻止在cmd.exe
执行此命令行之前显示此命令行,它会像@echo off
一样执行批处理文件对于批处理文件中的所有命令。
为了更好地理解所使用的命令行及其工作原理,请打开命令提示符 window,在其中执行以下命令,并仔细阅读为每个命令显示的所有帮助页面。
call /?
... 说明%~d0
xcopy /?
另请参阅预定义列表 Windows Environment Variables。