Batch file 循环批处理并删除某些文件夹
我的目标: 创建一个程序,创建文件夹Batch file 循环批处理并删除某些文件夹,batch-file,Batch File,我的目标: 创建一个程序,创建文件夹a_5,在现有文件夹(a_1,a_2…a_4)上迭代,并将.txt文件从它们复制到新创建的文件夹(a_5)。然后它应该删除除A_5之外的所有文件夹A_5应在与其他文件夹相同的目录中创建 我的解决方案: @ECHO OFF cd C:\Users\1\Documents\R_scripts\bat-files\A_MAIN if not exist "C:\Users\1\Documents\R_scripts\bat-files\A_MAIN\A_5
a_5
,在现有文件夹(a_1
,a_2
…a_4
)上迭代,并将.txt
文件从它们复制到新创建的文件夹(a_5
)。然后它应该删除除A_5
之外的所有文件夹A_5
应在与其他文件夹相同的目录中创建
我的解决方案:
@ECHO OFF
cd C:\Users\1\Documents\R_scripts\bat-files\A_MAIN
if not exist "C:\Users\1\Documents\R_scripts\bat-files\A_MAIN\A_5" mkdir C:\Users\1\Documents\R_scripts\bat-files\A_MAIN\A_5
for /D %%G in ("A*") do (
xcopy %%G\*.txt C:\Users\1\Documents\R_scripts\bat-files\A_MAIN\A_5 /y
if %%G NEQ "A_5" del /s /q %%G
)
问题:它创建一个文件夹并将所有
.txt
文件复制到a_5
,但是它也会删除所有文件夹,尽管%%G NEQ“a_5”
。我尝试用echo>>“C:\Users\1\Documents\R\u scripts\bat files\logging.txt”%%G
记录所有名称,结果它们变成了预期的字符串,即A\u 1
,A\u 2
等等。这里有什么问题?我将非常感谢您的帮助。您正在比较苹果和海参如果%%G NEQ“A_5”del/s/q%%G
表示您正在做如果this==“this”做某事
是否与和“this”
看起来很像?:)。此外,如果存在,则无需执行,
只需执行mkdir….>nul 2>&1
…详细阐述格哈德正确而有趣的评论:如果
把一切都照字面理解,甚至是引号,那么如果“%%~G”neq“A_5”
或如果不是“%%~G”==“A_5”
就可以了;确保在使用“
显式包围字符串之前删除可能的引号,以避免双引号。顺便说一下,您通常应该引用所有路径,以避免出现空格和其他特殊字符的问题…