Batch file 需要使用批处理删除和重命名目录集的帮助吗

Batch file 需要使用批处理删除和重命名目录集的帮助吗,batch-file,Batch File,我是批处理编程新手。 我尝试了下面的逻辑,它将检查是否存在垃圾邮件,如果存在,它将删除目录,否则它将把垃圾邮件重命名为垃圾邮件 IF EXIST "E:\Users\Junk_old" ( rd /s /q "E:\Users\Junk_old" ) else (MOVE /Y "E:\Users\Junk" "E:\Users\Junk_old") 在给定路径中的一组目录中执行相同操作时,我需要帮助 提前感谢除非目录的新版本存在,否则不会删除旧的目录 如果控制台的输出正确,请从rmdir和r

我是批处理编程新手。 我尝试了下面的逻辑,它将检查是否存在垃圾邮件,如果存在,它将删除目录,否则它将把垃圾邮件重命名为垃圾邮件

IF EXIST "E:\Users\Junk_old" ( rd /s /q "E:\Users\Junk_old" ) else (MOVE /Y "E:\Users\Junk" "E:\Users\Junk_old")
在给定路径中的一组目录中执行相同操作时,我需要帮助


提前感谢

除非目录的新版本存在,否则不会删除旧的目录

如果控制台的输出正确,请从
rmdir
ren
行中删除
echo
命令

@echo off
    rem Prepare environment
    setlocal enableextensions

    rem Configure paths
    set "root=d:\temp"

    rem For each directory in root that has no "_old" suffix    
    for /f "tokens=*" %%d in ('dir /ad /b "%root%" ^| findstr /v /e "_old"') do (
        rem If there is an _old version of the directory, remove it
        if exist "%root%\%%~d_old" (
            echo rmdir /s /q "%root%\%%~d_old" 
        )
        rem If there is no _old version of the directory, rename it
        if not exist "%root%\%%~d_old" (
            echo ren "%root%\%%~d" "%%~d_old" 
        )
    )

    rem Clean
    endlocal

你知道即使
垃圾
不存在,它也会删除
垃圾
?你需要提供一些细节以获得适用于你的情况的帮助。我需要的是1。检查是否存在旧的垃圾邮件-如果是,请将其删除2。否则将垃圾邮件重命名为垃圾邮件。目的是删除旧文件并将现有文件重命名为旧文件。批处理代码就是这样做的。它还会删除您的辅助备份,即使您的主备份不存在。谢谢。是的,就是这样。但我需要对多个文件夹执行相同的操作。例如:如果存在junk1_old junk2_old和junk3_old,请删除它们。并将现有的junk1、junk2和junk3重命名为junk1_old、junk2_old和junk3_old这是从根目录重命名/删除所有目录。我需要从给定的根目录中重命名和删除一组目录。帮我做这件事that@NagaJyotsna:如果已知目录列表,请将的
行更改为:
for%%d in(“dir1”“dir2”“dir3”“dir4”)do(
。如果列表较长,最好在文本文件中包含目录列表,并在(fileWithListOfDirectories.txt)do中使用类似于
for/f“tokens=*”%%d的内容(
。在这两种情况下,目录都不应包含路径,因为它是在代码中添加的。或者将代码更改为不包含%root%并将路径放入目录中。根据需要进行调整。请帮助理解tilde中的脚本symbol@NagaJyotsna:有关变量sintax选项的完整列表,请参见
获取/?
。在这种情况下,
%%~d
只是
%%d
的内容,但如果存在,则没有周围的引号。好的。明白了。为什么我们需要在此处使用%%d而不是%d