【发布时间】:2020-09-18 11:55:30
【问题描述】:
这个问题与Test IF file exist, ELSE xcopy these two files有关。
背景:有时我会选择在给定文件夹中运行aGallery-dl.bat(100 个文件夹中的每个文件夹中只有一个)。它首先删除Folder.jpg,然后将Folder2.jpg 重命名为Folder.jpg。当查看在文件资源管理器中选择了父文件夹的文件夹时,这会导致红色 X 被黄色 ! 取代。其次,它调用gallery-dl.exe。我使用从红色 X 变为黄色 ! 来让我知道我至少运行了一次 aGallery-dl.bat。如果aGallery-dl.bat 成功完成,它最终会删除Folder.jpg(当前为黄色!),现在可以看到文件夹的代表内容(通常是DeviantArt .jpg 的)。一切都很好。
rem @echo off
del .\Folder.jpg
ren .\Folder2.jpg Folder.jpg
FOR /F %%i IN ('cd') DO set FOLDER=%%~nxi
"C:\Program Files (x86)\gallery-dl\gallery-dl.exe" -d "U:\11Web\gallery-dl" --download-archive ".\aGDB.sqlite3" "https://www.deviantart.com/"%FOLDER%"/gallery/all"
del .\Folder.jpg
问题:重申,Gallery-dl.bat 位于 100 个文件夹中。有时,我会从它的本地文件夹中运行其中一个。第5行,如果调用网站成功,gallery-dl.exe会在本地文件夹中创建zzzGDB.sqlite3。
在前面的代码中,当aGallery-dl.bat完成时,它只会删除Folder.jpg。这假设对网页的调用是成功的。在极少数情况下,由于多种原因,对网页的调用会失败,但在关闭时(由于最后一个del .\Folder.jpg),它仍会删除folder.jpg。
如果 zzzGDB.sqlite3 没有创建/不存在,我需要Folder.jpg(黄色 !) 留下来。
因此,在下面的代码(第 6 行,现在为空白)中,我已经删除了最后的 del .\Folder.jpg,并尝试从第 7 行开始插入提供的代码,插入一个针对 zzzGDB.sqlite 的测试。如果找到,del .\Folder.jpg。如果未找到,则不会对 folder.jpg 采取任何措施(它仍然存在)。
(最底部的rem 声明只是作为我自己知识的占位符。)
rem @echo off
del .\Folder.jpg
ren .\Folder2.jpg Folder.jpg
FOR /F %%i IN ('cd') DO set FOLDER=%%~nxi
"C:\Program Files (x86)\gallery-dl\gallery-dl.exe" -d "U:\11Web\gallery-dl" --download-archive ".\zzzGDB.sqlite3" "https://www.deviantart.com/"%FOLDER%"/gallery/all"
setlocal EnableExtensions DisableDelayedExpansion
for /D %%I in ("U:\11Web\gallery-dl\deviantart\*") do (
if exist "%%I\zzzGDB.sqlite3" (
del "%%I\Folder.jpg"
)
rem
)
endlocal
注意:目前,修改后的代码会遍历U:\11Web\gallery-dl\deviantart\* 中的每个文件夹。此操作应仅保留给本地文件夹。我猜下面是问题所在。
for /D %%I in ("U:\11Web\gallery-dl\deviantart\*")
我不知道如何删除它并在do 之后仍然实现所有内容?
do (
if exist ".\zzzGDB.sqlite3" (
del ".\Folder.jpg"
)
rem
)
【问题讨论】:
-
圣烟。我回答了我自己的问题。最后一次奏效了。留下答案供他人使用。
-
请将其作为答案发布,并通过单击旁边的复选框将该答案标记为已接受。
标签: batch-file if-statement exists