дописать строки в Default.bar (Total Commander)
Доброго время суток.
Помогите, подскажите, пожалуйста, как при помощи Bat-файла дописать строки в Default.bar (Total Commander):
читать дальше »
button34=C:\Program Files\TeraCopy\teracopy.exe,1
cmd34=C:\Program Files\TeraCopy\teracopy.exe
param34=Copy *"%L" "%T"
path34=C:\Program Files\TeraCopy\
menu34=TeraCopy
button35=C:\Program Files\TeraCopy\teracopy.exe,2
cmd35=C:\Program Files\TeraCopy\teracopy.exe
param35=Move *"%L" "%T"
path35=C:\Program Files\TeraCopy\
menu35=TeraMove
Необходимо чтобы скрипт проверял наличие этих строк, если их нет, то записывал в конце файла, продолжая нумерацию.
|
Код:
@echo off
setlocal enabledelayedexpansion
for %%i in (1 2) do (
>nul findstr /irxc:"button[0-9]*=C:\\Program Files\\TeraCopy\\teracopy\.exe,%%i" "Default.bar"|| (
for /f "usebackq delims=" %%j in ("Default.bar") do (
set last_string=%%j
)
for /f "delims=$=" %%j in ("!last_string:menu=$!") do (
set /a next_number=%%j+1
)
(
echo button!next_number!=C:\Program Files\TeraCopy\teracopy.exe,%%i
echo cmd!next_number!=C:\Program Files\TeraCopy\teracopy.exe
echo param!next_number!=Copy *"%%L" "%%T"
echo path!next_number!=C:\Program Files\TeraCopy\
echo menu!next_number!=TeraCopy
)>>"Default.bar"
)
)
endlocal
exit /b
|
Georgio, спасибо за помощь. Скрипт добавляет сроки, но одинаковые только меняет номер иконки.
И добавляет только тогда, когда в одной папке со сриптом находится Default.bar.
читать дальше »
button41=C:\Program Files\TeraCopy\teracopy.exe,1
cmd41=C:\Program Files\TeraCopy\teracopy.exe
param41=Copy *"%L" "%T"
path41=C:\Program Files\TeraCopy\
menu41=TeraCopy
button42=C:\Program Files\TeraCopy\teracopy.exe,2
cmd42=C:\Program Files\TeraCopy\teracopy.exe
param42=Copy *"%L" "%T"
path42=C:\Program Files\TeraCopy\
menu42=TeraCopy
|
Цитата:
Цитата 41275jur
Скрипт добавляет сроки, но одинаковые »
|
Извините, недоглядел. Переделал:
Код:
@echo off
setlocal enabledelayedexpansion
for %%i in ("1 Copy" "2 Move") do (
for /f "tokens=1,2" %%j in (%%i) do (
>nul findstr /irxc:"button[0-9]*=C:\\Program Files\\TeraCopy\\teracopy\.exe,%%j" "Default.bar"|| (
for /f "usebackq delims=" %%l in ("Default.bar") do (
set last_string=%%l
)
for /f "delims=$=" %%l in ("!last_string:menu=$!") do (
set /a next_number=%%l+1
)
(
echo button!next_number!=C:\Program Files\TeraCopy\teracopy.exe,%%j
echo cmd!next_number!=C:\Program Files\TeraCopy\teracopy.exe
echo param!next_number!=%%k *"%%L" "%%T"
echo path!next_number!=C:\Program Files\TeraCopy\
echo menu!next_number!=Tera%%k
)>>"Default.bar"
)
)
)
endlocal
exit /b
Цитата:
Цитата 41275jur
И добавляет только тогда, когда в одной папке со сриптом находится Default.bar. »
|
Но это так и задумывалось: Вы же не указали путь к файлу " Default.bar".
|
Цитата:
Цитата Georgio
Но это так и задумывалось: Вы же не указали путь к файлу "Default.bar". »
|
C:\Program Files\Total Commander\Default.bar
|
Код:
@echo off
setlocal enabledelayedexpansion
set Default.bar=C:\Program Files\Total Commander\Default.bar
set TeraCopy=C:\Program Files\TeraCopy\
for %%i in ("1 Copy" "2 Move") do (
for /f "tokens=1,2" %%j in (%%i) do (
(
findstr /irxc:"button[0-9]*=%TeraCopy:\=\\%teracopy\.exe,%%j"^
"%Default.bar%">nul
)|| (
for /f "usebackq delims==" %%l in ("%Default.bar%") do (
set last_menu=%%l
set /a next_number=!last_menu:menu=!+1
)
(
echo button!next_number!=%TeraCopy%teracopy.exe,%%j
echo cmd!next_number!=%TeraCopy%teracopy.exe
echo param!next_number!=%%k *"%%L" "%%T"
echo path!next_number!=%TeraCopy%
echo menu!next_number!=Tera%%k
)>>"%Default.bar%"
)
)
)
endlocal
exit /b
|
Georgio, большое спасибо, то, что надо.
Подскажи если не трудно, можно ли вписать в этот батник чтобы он автоматически определял, где установлен Total Commander и вписывал по этому пути строки в Default.bar. Оф. версия ставится в c:\totalcmd, другие ставятся C:\Program Files\Total Commander и т.д. То есть чтобы определял на системном диске.
|
Вместо команды "set Default.bar=C:\Program Files\Total Commander\Default.bar" делаем так:
Код:
set Default.bar=c:\totalcmd\Default.bar
if exist "C:\Program Files\Total Commander\Default.bar" set Default.bar="C:\Program Files\Total Commander\Default.bar"
Но надёжнее найти этот путь в реестре, выгрузить оттуда командой reg, и использовать.
|
Цитата:
Цитата 41275jur
можно ли вписать в этот батник чтобы он автоматически определял, где установлен Total Commander и вписывал по этому пути строки в Default.bar. »
|
1 ТС может быть установлен у пользователя в любую директорию и на любом диске.
2 Он может быть не "прописан" в реестре (портативный вариант).
3 У пользователя может быть несколько ТС одновременно.
В этом случае надежнее будет запускать батник из запущенного ТС и использовать для определения местоположения ТС переменную %COMMANDER_PATH%
|
Хотелось бы, чтобы установка проходила в тихом режиме.
gora, помоги, пожалуйста. В твоем 7z SFX Tool v 4.2.5 в панели Total появляется значок, а с этим батником – строки вписуются но иконка не появляется даже после перезапуска Total Commander.
|
Цитата:
Цитата 41275jur
в панели Total появляется значок, а с этим батником – строки вписуются но иконка не появляется »
|
При добавлении кнопки на панель нужно увеличивать параметр:
Код:
[Buttonbar]
Buttoncount=55
Сколько в этом параметре указано, столько кнопок (значков) и отображается на панели. А т.к., в скрипте это число не увеличивается, то и новый значок на панели не появляется.
|
Извините меня за наглость, но я не силен в скриптовых языках.
Подскажите, пожалуйста, как дописать в этом батнике
Код:
@echo off
setlocal enabledelayedexpansion
set Default.bar=C:\Program Files\Total Commander\Default.bar
set TeraCopy=C:\Program Files\TeraCopy\
for %%i in ("1 Copy" "2 Move") do (
for /f "tokens=1,2" %%j in (%%i) do (
(
findstr /irxc:"button[0-9]*=%TeraCopy:\=\\%teracopy\.exe,%%j"^
"%Default.bar%">nul
)|| (
for /f "usebackq delims==" %%l in ("%Default.bar%") do (
set last_menu=%%l
set /a next_number=!last_menu:menu=!+1
)
(
echo button!next_number!=%TeraCopy%teracopy.exe,%%j
echo cmd!next_number!=%TeraCopy%teracopy.exe
echo param!next_number!=%%k *"%%L" "%%T"
echo path!next_number!=%TeraCopy%
echo menu!next_number!=Tera%%k
)>>"%Default.bar%"
)
)
)
endlocal
exit /b
чтобы в строке Buttoncount=33 файла Default.bar увеличился параметр на два числа.
|
Код:
@echo off
setlocal enabledelayedexpansion
set Default.bar=C:\Program Files\Total Commander\Default.bar
set TeraCopy=C:\Program Files\TeraCopy\
for %%i in ("1 Copy" "2 Move") do (
for /f "tokens=1,2" %%j in (%%i) do (
(
findstr /irxc:"button[0-9]*=%TeraCopy:\=\\%teracopy\.exe,%%j"^
"%Default.bar%">nul
)|| (
for /f "usebackq tokens=1* delims==" %%l in ("%Default.bar%") do (
set /a n+=1
if not "%%m"=="" (
if %%l==Buttoncount (
set /a Buttoncount=%%m+1
set "!n!=%%l=!Buttoncount!"
) else (
set "!n!=%%l=%%m"
set "last_menu=%%l"
set /a next_number=!last_menu:menu=!+1
)
) else (
set "!n!=%%l"
)
)
(
for /l %%l in (1 1 !n!) do (
echo.!%%l!
)
set n=
for %%l in (
"button!next_number!=%TeraCopy%teracopy.exe,%%j"
"cmd!next_number!=%TeraCopy%teracopy.exe"
"param!next_number!=%%k #$%%L$ $%%T$"
"path!next_number!=%TeraCopy%"
"menu!next_number!=Tera%%k"
) do (
set string=%%~l
set string=!string:$="!
echo !string:#=*!
)
)>"%Default.bar%"
)
)
)
endlocal
exit /b
|
Время: 02:09.
© OSzone.net 2001-