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”
就可以了;确保在使用
显式包围字符串之前删除可能的引号,以避免双引号。顺便说一下,您通常应该引用所有路径,以避免出现空格和其他特殊字符的问题…