Записать имя папки в которой лежит батник в переменную а потом эту же папку переим.
Здравствуйте! Я в batниках хорошо не разбираюсь и поэтому у меня возникла проблема требующяя решения. Нужно чтобы батник записал имя той папки в которой лежит он сам в переменную. %oldipforsite%. Заранее спасибо
|
Цитата:
Цитата bobr95
Нужно чтобы батник записал имя той папки в которой лежит он сам в переменную. %oldipforsite% »
|
Попробуйте так:
Код:
@Echo Off
Set oldipforsite=%~dp0
For /D %%a In ("%oldipforsite:~0,-1%.txt") Do Set oldipforsite=%%~na
Echo %oldipforsite%
Pause>nul
Exit
Цитата:
Цитата bobr95
а потом эту же папку переим. »
|
А вот переименовать папку из батника, запущенного из этой папки, не позволит система.
|
А можно эту переменную передать в другой батник и из него переименовать?
|
Цитата:
Цитата bobr95
А можно эту переменную передать в другой батник и из него переименовать? »
|
Можно попробовать так:
Код:
@Echo Off
:: Задача1 - получение в переменную имени папки
Set oldipforsite=%~dp0
For /D %%a In ("%oldipforsite:~0,-1%.txt") Do Set oldipforsite=%%~na
:: Задача2 - переименование папки
Set NewFolder=Folder123
CD ..
REN %~dp0 %NewFolder%
Exit
Только вот переменная oldipforsite здесь не требуется, т.к., она содержит только имя папки, а передавать нужно полный путь к этой папке и ухищрения по выделению имени папки не нужны.
|
Пасибо, робает. Теперь допишу койче, скомпилирую в ехе и отправлю в автозагрузку!
|
Всё очень просто, в самом начале программы надо написать
@set oldipforsite=%cd%
@echo %oldipforsite%
@pause
|
white155, Ваш код ошибочен, ибо переменная окружения «CD» содержит текущий путь на текущем диске, а не путь к пакетному файлу.
Подсказка
Пакетный файл может запускаться не только двойным щелчком из Проводника, но, прежде всего — указанием пути к пакетному файлу:
Цитата:
Код:
E:\Песочница\0085>0001.cmd
E:\Песочница\0085
Для продолжения нажмите любую клавишу . . .
E:\Песочница>E:\Песочница\0085\0001.cmd
E:\Песочница
Для продолжения нажмите любую клавишу . . .
E:\Песочница>.\0085\0001.cmd
E:\Песочница
Для продолжения нажмите любую клавишу . . .
E:\>E:\Песочница\0085\0001.cmd
E:\
Для продолжения нажмите любую клавишу . . .
D:\>E:\Песочница\0085\0001.cmd
D:\
Для продолжения нажмите любую клавишу . . .
D:\>
|
|
Цитата:
Цитата gora
Попробуйте так:
Код:
@Echo Off
Set oldipforsite=%~dp0
For /D %%a In ("%oldipforsite:~0,-1%.txt") Do Set oldipforsite=%%~na
Echo %oldipforsite%
Pause>nul
Exit »
|
а как работает конструкция %%~na ?
|
Плюс ещё такой ньюанс:
если текущий каталог у нас "1", то при выполнении сценария
Код:
@Echo Off
Set oldipforsite=%~dp0
For /D %%a In ("%oldipforsite:~0,-1%.txt") Do Set oldipforsite=%%~na
Echo %oldipforsite%
Pause>nul
Echo oldipforsite= %oldipforsite%>1.txt
Exit
содержание файла 1.txt будет таково: oldipforsite=
то есть единичка почему-то не занесётся
:(
|
Время: 18:55.
© OSzone.net 2001-