нет способа найти то, что я пытаюсь (так просто): у меня есть такая структура:

+folder1 (содержит :)

   -folder2
   -folder3
   -...
   -folderi

Я просто хочу добавить простое слово (WORD) после папок 2 ... я простой? Я должен получить:

 -folder1WORD
 -folder2WORD
 -...
 -folderiWORD

НО я не хочу менять имя folder1 (мне удалось только изменить ВСЕ папки)

НО некоторые из них имеют пробел в своем имени (мне удалось преобразовать "папку с пробелом" в 3 других папки WORD и withWORD и spaceWORD.

НО должно быть ПРОСТРАНСТВО как первый символ СЛОВА (нет способа сделать это)

сейчас я безуспешно пытаюсь найти то, что нашел в других темах !!!

У кого-нибудь есть способ сделать это? Спасибо за вашу помощь.

3 ответа3

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 говорит его только распечатать файл п AME и е х натяжение 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.
...

Тайны доса? Если кто-нибудь может помочь ...

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .