-1

Я довольно нуб в Досе, и я пытаюсь сделать сценарий (да)

То, что я пытаюсь сделать, это:

  • Возьмите имя папки, в которой находится пакет (пример:.\Project_Apple * .bat)
  • Переименуйте файл в подпапке с именем первого
    (пример: \Project_Apple\OUTPUT\template.txt > \Project_Apple\OUTPUT\Project_Apple.txt)

Для переименования и таргетинга у меня нет проблем. Я использую CD и REN. Я читал, что команда FOR может сделать это и прочитать документацию об этом, но я не могу найти, как заставить его "запомнить" имя папки.

Есть ли способ сделать это?

РЕДАКТИРОВАТЬ:

Я сделал огромный шаг. Я добиваюсь переименования файла в папке с именем папки с:

for %%i in (%cd%) do set CurrDirName=%%~nxi
rename test.txt %CurrDirName%

Теперь я пытаюсь настроить таргетинг на файл в подпапке.

2 ответа2

0

Я достиг того, что хочу с этим.

for %%i in (%cd%) do set CurrDirName=%%~nxi
cd %CurrDir%\OUTPUT\
rename template.txt %CurrDirName%.txt
0

Не используйте %CD% это не обязательно папка, в которой находится пакет.

  • Если вызвать пакет с абсолютным или относительным путем, это не изменит текущую папку.
  • Для ссылки на текущий запущенный пакетный файл с полным путем используйте %~f0
  • извлечь из него папку, используя модификаторы for и ~

:: Q:\Test\2019\01\24\SU_1397868.cmd
@Echo off
Echo This batch file full path: %~f0
Echo This batch file drive    : %~d0
Echo This batch file path     : %~p0
Echo This batch file name     : %~n0

for %%A in (%0\..) Do Set folder=%%~nxA

Echo This batch file folder   : %folder%

If exist "%~dp0Output\template.txt" (
    Ren  "%~dp0Output\template.txt" "%folder%.txt"
)

Пример вывода на мой ramdrive A:

> SU_1397868.cmd
This batch file full path: A:\Project_Apple\SU_1397868.cmd
This batch file drive    : A:
This batch file path     : \Project_Apple\
This batch file name     : SU_1397868
This batch file folder   : Project_Apple

> tree /F A:\
A:\
└───Project_Apple
    │   SU_1397868.cmd
    │
    └───OUTPUT
            Project_Apple.txt

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