Показать полную графическую версию : [решено] Записать имя папки в которой лежит батник в переменную а потом эту же папку переим.
Здравствуйте! Я в batниках хорошо не разбираюсь и поэтому у меня возникла проблема требующяя решения. Нужно чтобы батник записал имя той папки в которой лежит он сам в переменную. %oldipforsite%. Заранее спасибо
Нужно чтобы батник записал имя той папки в которой лежит он сам в переменную. %oldipforsite% »
Попробуйте так:@Echo Off
Set oldipforsite=%~dp0
For /D %%a In ("%oldipforsite:~0,-1%.txt") Do Set oldipforsite=%%~na
Echo %oldipforsite%
Pause>nul
Exit
а потом эту же папку переим. »
А вот переименовать папку из батника, запущенного из этой папки, не позволит система.
А можно эту переменную передать в другой батник и из него переименовать?
А можно эту переменную передать в другой батник и из него переименовать? »
Можно попробовать так:@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 здесь не требуется, т.к., она содержит только имя папки, а передавать нужно полный путь к этой папке и ухищрения по выделению имени папки не нужны.
Пасибо, робает. Теперь допишу койче, скомпилирую в ехе и отправлю в автозагрузку!
white155
12-10-2011, 12:36
Всё очень просто, в самом начале программы надо написать
@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:\>
SANIOK_AV
10-04-2012, 16:30
Попробуйте так:
Код:
@Echo Off
Set oldipforsite=%~dp0
For /D %%a In ("%oldipforsite:~0,-1%.txt") Do Set oldipforsite=%%~na
Echo %oldipforsite%
Pause>nul
Exit »
а как работает конструкция %%~na ?
SANIOK_AV
10-04-2012, 18:42
Плюс ещё такой ньюанс:
если текущий каталог у нас "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=
то есть единичка почему-то не занесётся
:(
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.