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