我需要能够
当我再次运行脚本时,最好让它交叉引用已经完成的目录列表,这样就不必再次复制它们了。或者如果速度更快,请忽略交叉引用列表,只是让复制命令不会覆盖。
我已经到目前为止,但把它放在一起让我感到悲伤。
我可以通过以下方式列出* .ac文件的目录:
for /d /r %%a in (*) do @if exist %%a\*.ac (echo %%a)
这是我到目前为止所做的:
@echo off
cls
for /D /R %%a in (*) do @if exist "%%a\*.ac" (
if not exist "%%a\%%~Nacb.cvw" (
copy .\jzitfix.cvw "%%a\%%~Nacb.cvw">nul
)
if not exist "%%a\%%~Naia.cvw" (
copy .\jzitfix.cvw "%%a\%%~Naia.cvw">nul
)
if not exist "%%a\%%~Najzcd.cvw" (
copy .\jzitfix.cvw "%%a\%%~Najzcd.cvw">nul
)
if not exist "%%a\%%~Najzcpl.cvw" (
copy .\jzitfix.cvw "%%a\%%~Najzcpl.cvw">nul
)
if not exist "%%a\%%~Najzlnr.cvw" (
copy .\jzitfix.cvw "%%a\%%~Najzlnr.cvw">nul
)
if not exist "%%a\%%~Najzms.cvw" (
copy .\jzitfix.cvw "%%a\%%~Najzms.cvw">nul
)
if not exist "%%a\%%~Najzmt.cvw" (
copy .\jzitfix.cvw "%%a\%%~Najzmt.cvw">nul
)
if not exist "%%a\%%~Najzmu.cvw" (
copy .\jzitfix.cvw "%%a\%%~Najzmu.cvw">nul
)
if not exist "%%a\%%~Najzmv.cvw" (
copy .\jzitfix.cvw "%%a\%%~Najzmv.cvw">nul
)
if not exist "%%a\%%~Najzmw.cvw" (
copy .\jzitfix.cvw "%%a\%%~Najzmw.cvw">nul
)
if not exist "%%a\%%~Nalt.cvw" (
copy .\jzitfix.cvw "%%a\%%~Nalt.cvw">nul
)
if not exist "%%a\%%~Nams.cvw" (
copy .\jzitfix.cvw "%%a\%%~Nams.cvw">nul
)
if not exist "%%a\%%~Namt.cvw" (
copy .\jzitfix.cvw "%%a\%%~Namt.cvw">nul
)
if not exist "%%a\%%~Namu.cvw" (
copy .\jzitfix.cvw "%%a\%%~Namu.cvw">nul
)
if not exist "%%a\%%~Namv.cvw" (
copy .\jzitfix.cvw "%%a\%%~Namv.cvw">nul
)
if not exist "%%a\%%~Namw.cvw" (
copy .\jzitfix.cvw "%%a\%%~Namw.cvw">nul
)
if not exist "%%a\fixed" (
copy .\jzitfix.cvw "%%a\fixed">nul
echo FIXED: %%~Na
echo %%~Na >> fixed.txt
)
)
答案 0 :(得分:1)
@echo off
rem in the FOR loop %%~Pa is the directory name and %%~Na the file name
for /R %%a in (*.ac) do (
if not exist %%~Pa%%~NaMS.cvw (
copy \fixed\path\%%~NaMS.cvw %%~Pa
echo %%~Pa>> textfile.txt
)
)
<强>附录强>
对不起也许我误解了一点。根据您的第一个描述,我的代码执行以下操作:
对于扩展名为.ac的每个路径\文件(例如,“foobar.ac”): 将具有相同名称加上“MS”和.cvw扩展名的文件(例如“foobarMS.cvw”)复制到同一路径并将该路径保存在文本文件中,但仅限于该文件不存在。
我从您的要求中推断出最后一部分(“只有当该文件不存在时才出现”):“当我再次运行脚本时,它会很好......不必再次复制它们。或者......只是让复制命令不会覆盖“)。
你的解释清楚地说:“当文件被复制时,它们需要与没有扩展名的* .ac文件具有相同的名称......”,“一旦完成复制文件,请保存它文本文件中的那条路径“。所以,我不明白第二个示例的多个名称来自何处。
也许你的第一个描述不清楚,应该是:
如果是这种情况,那么我不知道何时“在文本文件中保存该路径”:何时复制每个文件(为每个丢失的文件重复相同的路径)?或者只为每条路径一次?或者只有至少复制了一个文件?
下面的批处理文件是根据之前描述的修改版本:
@echo off
rem in the FOR loop %%~Pa is the directory name and %%~Na the file name
for /R %%a in (*.ac) do (
for %%b in (cb ia etc mw) do (
if not exist %%~Pa%%~Na%%b.cvw (
copy .\jzitfix.cvw %%~Pa%%~Na%%b.cvw > nul
)
)
)
如果这仍然不是您想要的,请详细说明您想要的内容!