例子:

例子:

无法找到我尝试的方法(这么简单):我有这个结构:

+folder1(包含:)

   -folder2
   -folder3
   -...
   -folderi

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

 -folder1WORD
 -folder2WORD
 -...
 -folderiWORD

但我不想更改文件夹 1 的名称(我只成功更改了所有文件夹)

但是其中一些名称中有空格(我已成功将“带空格的文件夹”转换为其他 3 个 folderWORD 和 withWORD 和 spaceWORD。

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

现在我已经尝试了在其他线程中发现的方法,但没有成功!

有人有办法做到这一点吗?谢谢您的帮助。

答案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修饰符指示它仅打印文件name 和 eX张力,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

答案2

@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

感谢您的帮助

答案3

找到了一种方法,但没有完全成功:我有这个:

获取子文件夹列表 :OK

不处理父文件夹:OK

获取要重命名的好名字:OK

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

@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 的奥秘?如果有人能帮忙……

相关内容