dos批处理重命名文件夹(另一个)


0

无法找到我尝试的方法(是如此简单):我具有以下结构:

+ folder1(包含:)

   -folder2
   -folder3
   -...
   -folderi

我只想在文件夹2 ... i之后添加简单单词(WORD)?我应该得到:

 -folder1WORD
 -folder2WORD
 -...
 -folderiWORD

但是我不想更改folder1的名称(我仅更改所有文件夹就成功了)

但是其中一些名称中有空格(我已经成功转换了另外3个folderWORD以及withWORD和spaceWORD中的“带空格的文件夹”。

但是应该作为WORD的第一个字符是一个空格(无法做到这一点)

现在,我已经尝试了在其他线程中找到的内容,但没有成功!

任何人都可以做到这一点吗?谢谢你的帮助。


抱歉,我无法向第一行中的所有人打招呼(未记录编辑吗?)
paya

2
请注意,superuser.com不是免费的脚本/代码编写服务。如果您告诉我们到目前为止您已经尝试过什么(包括您已经在使用的脚本/代码)以及您遇到的困难,那么我们可以尝试解决特定的问题。您还应该阅读如何问一个好问题?
DavidPostill

Answers:


1

如果我了解这个问题,那么它将适用于交互式命令提示符:

for /d %D IN (c:\temp\folder1\*.*) do ren "%D" "%~nxDWORD"

如果在批处理文件中运行此命令,则需要将每个百分号加倍:

for /d %%D IN (c:\temp\folder1\*.*) do ren "%%D" "%%~nxDWORD"

/d选项告诉for您仅查看目录。该~nxD修饰符告诉它只能打印文件ñ诗情和e X的紧张局势D,而不是完整的路径。参见FOR /?以获取有关修饰符语法的更多信息。

例:

之前

c:\temp\folder1>dir c:\temp\folder1

 Directory of c:\temp\folder1

<DIR>          folder with space
<DIR>          folder.dotted
<DIR>          folder2
<DIR>          folder3
<DIR>          folderi

命令

c:\temp\folder1>for /d %D IN (c:\temp\folder1\*.*) do ren "%D" "%~nxDWORD"

c:\temp\folder1>ren "c:\temp\folder1\folder with space" "folder with spaceWORD"
c:\temp\folder1>ren "c:\temp\folder1\folder.dotted" "folder.dottedWORD"
c:\temp\folder1>ren "c:\temp\folder1\folder2" "folder2WORD"
c:\temp\folder1>ren "c:\temp\folder1\folder3" "folder3WORD"
c:\temp\folder1>ren "c:\temp\folder1\folderi" "folderiWORD"

结果

c:\temp\folder1>dir

 Directory of c:\temp\folder1

<DIR>          folder with spaceWORD
<DIR>          folder.dottedWORD
<DIR>          folder2WORD
<DIR>          folder3WORD
<DIR>          folderiWORD

0

@ GuitarPicker

感谢您的回答,但不能在这里工作。

1是,它是一个批处理文件(另一个文件的一部分)

2实际使用中,bat文件位于第一个文件夹中,因此我按如下方式修改您的代码:它可以在父文件夹中工作,但不能在子文件夹中工作

:: for testing
echo %e%*.*
pause
dir %e%*.*
pause

for /d %%D IN (%e%*.*) do ren "%%D" "%%~nxDWORD"
pause

@ DavidPostill

我的起始代码如下:

 echo off
 for /f "tokens=* delims= " %%a in ('dir/s/b/ad') do (
 echo %%a
 ::this works made new folder with extension even with space
 mkdir "%%a"_WORD_test
 ::this does not work
 ren %%a "%%a"_WORD
)
 pause

谢谢您帮忙


0

找到了办法但没有完全成功:我有这个:

获取子文件夹列表:确定

不处理父文件夹:确定

获得重命名的好名字:确定

但是重命名本身不起作用...

@echo off
Set /a COUNTER=0
 setlocal ENABLEDELAYEDEXPANSION
 :: affiche les dossiers en inverse MAIS aussi le dossier parent NO USE
 for /f "usebackq tokens=1,*" %%a in (`dir /ad /b /s /o-n`) do (
  ::on saute le premier - skip first =  parent dir
  echo testing %%a
  echo counter !counter!
  if !counter!==0 (
  echo abstention
  ) ELSE (
   echo Renaming %%a in %%a_pdf
  ::echo en %%a_pdf
  ::ren "%%a" "%%a"_pdf
   )
  set /a COUNTER=COUNTER+1
  )

  endlocal
  pause

我在CMD窗口中得到此信息(请注意,在未激活重命名命令的情况下会出现错误(我的意思是当重命名如之前的脚本中所述)时:

testing M:\x_bd\test\test_inside
counter 0
abstention
testing M:\x_bd\test\test_inside\Mayam_01-02
counter 1
Renaming M:\x_bd\test\test_inside\Mayam_01-02 in M:\x_bd\test\test_inside\Mayam_01-02_pdf
Le lecteur spécifié est introuvable.
testing M:\x_bd\test\test_inside\Mac
counter 2
Renaming M:\x_bd\test\test_inside\Mac in M:\x_bd\test\test_inside\Mac_pdf
Le lecteur spécifié est introuvable.
...

DOS之谜?如果有人可以帮助...

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.