Batch file 如果不称为“info”,则将子目录重命名为父文件夹名称

Batch file 如果不称为“info”,则将子目录重命名为父文件夹名称,batch-file,if-statement,rename,Batch File,If Statement,Rename,如果没有特定名称,是否可以创建一个将重命名文件夹的批处理文件? 如: 父目录 -->信息 -->randomfoldername 我有许多文件夹遵循上述模式。我想做的是创建一个批处理文件,在这个结构中重命名randomfoldername。父目录中始终有两个文件夹,一个是“始终信息”,另一个是针对每种情况的更改。批处理文件中是否有一种方法可用于始终重命名randomfoldername目录?我在想一些关于 如果不是==信息,则ren。。。ect 这可能吗?您可以先检查文件夹是否存在,然后重命名文

如果没有特定名称,是否可以创建一个将重命名文件夹的批处理文件? 如: 父目录 -->信息 -->randomfoldername

我有许多文件夹遵循上述模式。我想做的是创建一个批处理文件,在这个结构中重命名randomfoldername。父目录中始终有两个文件夹,一个是“始终信息”,另一个是针对每种情况的更改。批处理文件中是否有一种方法可用于始终重命名randomfoldername目录?我在想一些关于

如果不是==信息,则ren。。。ect


这可能吗?

您可以先检查文件夹是否存在,然后重命名文件夹

  if not exist c:\info ( call random.bat )
random.bat:

dir /A:D /b | findstr.exe /n /R "." > s:\sites\file-count.txt

FOR /F "tokens=1-10 delims=:" %%A IN ('type "s:\sites\file-count.txt"') do 

set NUMBER-OF-FILES=%%A

FOR /L %%A IN (1,1,%number-of-files%) DO CALL RENAME.bat %%A
重命名为.bat

    :rename
FOR /F "tokens=1-10 delims=:" %%A IN ('type "s:\sites\file-count.txt" ^| 
findstr "%1:"') do ren %%B %RANDOM%%%B
你也可以使用免费的工具,比如 该应用程序具有用于bat文件的cli 您还可以使用powershell脚本,如

$a = test-path c:\info
 if ( $a -eq "True" ) { Write-Host nothing to do } Else { gic -directory path | %{$n="$pwd\$((get-random).tostring())$($_.name)";$_.moveto($N)} } 

下一个脚本从传递到的基本检查开始

对于/F dir使用。下一个解释:

FOR/R以及简单FOR立即开始迭代,在 它已完成对磁盘驱动器的扫描。这是可能的循环 重复已命名的文件!这将导致它被重命名 两次,给出错误的结果。解决方案是使用FOR/F和 命令“DIR/B”,因为FOR/F总是将命令处理为 在迭代之前完成

输出:

仅要求读取索引:


我已经编辑了我对问题的描述,不是我想将信息重命名为图片,而是我想将不称为信息的文件夹重命名为其他文件夹。谢谢你的回复@Eamon仅为bat文件和脚本更改为您想要的路径而更改
@ECHO OFF >NUL
SETLOCAL enableextensions disabledelayedexpansion
set "ParentDirectory=%*"
if "%ParentDirectory%"=="" goto :usage1
if not exist "%ParentDirectory%\" goto :usage2
if not exist "%ParentDirectory%\info\" goto :usage3
set "SpecificName=Desired Name"

set /A "count=0"
for /F "delims=" %%G in ('dir /B /A:D "%ParentDirectory%\"') do set /A "count+=1"
if %count% neq 2 goto :usage4 

for /F "delims=" %%G in ('dir /B /A:D "%ParentDirectory%\"') do (
    if /I not "%%~G"=="info" (
        if /I not "%%~G"=="%SpecificName%" (
            echo renaming "%ParentDirectory%\%%~G" to "%SpecificName%"
            rename "%ParentDirectory%\%%~G" "%SpecificName%"
        ) else (
            echo renamed already: "%SpecificName%"
        )
    ) 
)
:endlocal
ENDLOCAL
goto :eof

:usage1
echo no paramater
goto :endlocal

:usage2
echo "%ParentDirectory%" folder does not exist
goto :endlocal

:usage3
echo "%ParentDirectory%\info" folder does not exist
goto :endlocal

:usage4
echo "%ParentDirectory%" folder contains %count% subfolders 
goto :endlocal
==>29376745.bat
no paramater

==>29376745.bat x y
"x y" folder does not exist

==>29376745.bat d:\test
"d:\test\info" folder does not exist

==>md "d:\test\info"

==>29376745.bat d:\test
"d:\test" folder contains 6 subfolders

==>29376745.bat d:\test\29376745
renaming "d:\test\29376745\currentName" to "Desired Name"

==>29376745.bat d:\test\29376745
renamed already: "Desired Name"

==>