Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] дописать строки в Default.bar (Total Commander) (http://forum.oszone.net/showthread.php?t=279805)

41275jur 26-03-2014 00:56 2328609

дописать строки в 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

Необходимо чтобы скрипт проверял наличие этих строк, если их нет, то записывал в конце файла, продолжая нумерацию.

Georgio 26-03-2014 18:47 2328958

Код:

@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


41275jur 26-03-2014 22:02 2329047

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

Georgio 26-03-2014 22:34 2329074

Цитата:

Цитата 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".

41275jur 26-03-2014 23:36 2329114

Цитата:

Цитата Georgio
Но это так и задумывалось: Вы же не указали путь к файлу "Default.bar". »

C:\Program Files\Total Commander\Default.bar

Georgio 27-03-2014 01:08 2329154

Код:

@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


41275jur 27-03-2014 21:58 2329505

Georgio, большое спасибо, то, что надо.
Подскажи если не трудно, можно ли вписать в этот батник чтобы он автоматически определял, где установлен Total Commander и вписывал по этому пути строки в Default.bar. Оф. версия ставится в c:\totalcmd, другие ставятся C:\Program Files\Total Commander и т.д. То есть чтобы определял на системном диске.

Гуллипут 29-03-2014 22:18 2330353

Вместо команды "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, и использовать.

gora 30-03-2014 08:18 2330431

Цитата:

Цитата 41275jur
можно ли вписать в этот батник чтобы он автоматически определял, где установлен Total Commander и вписывал по этому пути строки в Default.bar. »

1 ТС может быть установлен у пользователя в любую директорию и на любом диске.
2 Он может быть не "прописан" в реестре (портативный вариант).
3 У пользователя может быть несколько ТС одновременно.
В этом случае надежнее будет запускать батник из запущенного ТС и использовать для определения местоположения ТС переменную %COMMANDER_PATH%

41275jur 31-03-2014 20:41 2331153

Хотелось бы, чтобы установка проходила в тихом режиме.

gora, помоги, пожалуйста. В твоем 7z SFX Tool v 4.2.5 в панели Total появляется значок, а с этим батником – строки вписуются но иконка не появляется даже после перезапуска Total Commander.

gora 31-03-2014 21:04 2331163

Цитата:

Цитата 41275jur
в панели Total появляется значок, а с этим батником – строки вписуются но иконка не появляется »

При добавлении кнопки на панель нужно увеличивать параметр:
Код:

[Buttonbar]
Buttoncount=55

Сколько в этом параметре указано, столько кнопок (значков) и отображается на панели. А т.к., в скрипте это число не увеличивается, то и новый значок на панели не появляется.

41275jur 01-04-2014 21:22 2331722

Извините меня за наглость, но я не силен в скриптовых языках.
Подскажите, пожалуйста, как дописать в этом батнике
Код:

@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 увеличился параметр на два числа.

Georgio 03-04-2014 02:06 2332391

Код:

@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


41275jur 03-04-2014 06:22 2332412

Огромное всем спасибо.


Время: 02:09.

Время: 02:09.
© OSzone.net 2001-