С Новым годом! Форум программистов, компьютерный форум, киберфорум
Shell, Bash
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/18: Рейтинг темы: голосов - 18, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 22.10.2019
Сообщений: 2

Конвертировать bat в bash

22.10.2019, 07:02. Показов 3984. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток, пытаюсь воссоздать аналогичный скрипт только уже в bash ( на win он криво работает). Написал его, но он маленько кривой, т.е. функционал он выполняет, но если применять его на других машинах, приходится вносить изменения.

Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
@Echo Off
 
net use z: \\192.168.10.5\cam_record /user:camera camera
SetLocal EnableExtensions
set CountConst=1
set RowCount=0
echo ^<?php > \\192.168.10.5\cam_record\recordreport.html
set FirstLocation=\\192.168.10.5\cam_record\%date:~6,4%-%date:~3,2%-%date:~0,2%
 
Call :CheckFileCount "\\192.168.10.5\cam_record\%date:~6,4%-%date:~3,2%-%date:~0,2%"
 
echo ?^> >> \\192.168.10.5\cam_record\recordreport.html
 
copy \\192.168.10.5\cam_record\recordreport.html \\192.168.10.5\cam_record\recordreport.txt
 
Exit /B
 
:CheckFileCount
  Set DirLocation=%~1
  echo Obrabativau "%DirLocation%"
  For /F "Delims=" %%I In ('Dir /A-D /B /S "%DirLocation%" 2^>nul ^| Find /V /C ""') Do Set FileCount=%%I
  
  For /F "Delims=" %%I In ('Dir /b /T:A /A:-D /O:-D "%DirLocation%"  2^>nul ^| Find /V /C ""') Do (Set LastFileCount=%%I)
    
        If %LastFileCount% GTR 1 (
            For /F "Delims=" %%I In ('Dir /b /T:A /A:-D /O:-D "%DirLocation%" ') Do (Set LastFile=%%I & goto :NextStep)
            :NextStep
            Echo "%LastFile%" eto posledny file
            for /f "tokens=4 delims=\(" %%i in ("%DirLocation%") do (echo $camsisimarray[%RowCount%][1]="%%i"; >> \\192.168.10.5\cam_record\recordreport.html)
            echo $camsisimarray[%RowCount%][2]="%LastFile%"; >> \\192.168.10.5\cam_record\recordreport.html
            echo %RowCount% 
            set /a RowCount+=1
        )
  If %FileCount%==0 (
    echo test
  ) Else (
  
    
  
    
    For /F "Delims=" %%I In ('Dir /AD /B "%DirLocation%" 2^>nul') Do Call :CheckFileCount "%DirLocation%\%%~I"
  )
GoTo :EOF
решил просто исправить синтаксис в батнике, вопрос, это слишком муторно? или легче заново написать?

P.S. до этого никогда не писал скрипты, поэтому прошу не кидаться камнями)
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.10.2019, 07:02
Ответы с готовыми решениями:

Конвертировать .bat в .sh
Приветствую всех Кто может помочь конвертировать .bat в .sh? Пытался сам, но получилось мягко скажем не очень:cry: Собственно сам...

Переделать скрипт из CMD/BAT в BASH
Всем доброго дня! Есть BAT del /f /q c:\sza\zsv del /f /q c:\sza\zpr del /f /q c:\sza\zsp del /f /q c:\sza\zco del /f...

Выполнение Bash команд из bat файла
Как передать bash команды из bat файла? вот все команды которые я хочу выполнить. docker cp C:\Users\usr\Desktop\in\input.wav...

4
Эксперт NIX
 Аватар для Marinero
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
23.10.2019, 11:44
Houston63, Вы же понимаете, что прежде чем что-то "переделывать" надо сесть и разобрать код чтобы понять
1. С какими данными скрипт работает
2. Что именно он делает
3. Что именно хотел составитель получить (потому как часто это немного разные вещи)
и т.д.
Не проще ли сразу озвучить чего именно Вы хотите получить в результате работы скрипта
0
0 / 0 / 0
Регистрация: 22.10.2019
Сообщений: 2
25.10.2019, 07:54  [ТС]
Скрипт должен выполнять следующее: переходит в указанную директорию (в данной директории каждый день создаются новые папки, имена у этих папок берутся из даты машины)

пример
Кликните здесь для просмотра всего текста


/var/www/html/cam_record/2019-10-25/192.168.13.13\(5000\)_ZPK\ VHOD\ SNARUGI/1_ZPK\ VHOD\ SNARUGI-CAM1/
/var/www/html/cam_record/2019-10-25/192.168.13.14*/*/
/var/www/html/cam_record/2019-10-25/192.168.13.15*/*/

и так далее

в каждой директории находятся архивы видеозаписей в формате avi (если это важно) скрипт должен найти последний созданный файл и записать его имя в отдельный файл для дальнейшей обработки

пример фала
Кликните здесь для просмотра всего текста

<?php
$camozerkaarray[0][1]="192.168.13.11";
$camozerkaarray[0][2]="11-28-51.avi ";
$camozerkaarray[1][1]="192.168.13.13";
$camozerkaarray[1][2]="11-28-48.avi ";
$camozerkaarray[2][1]="192.168.13.14";
$camozerkaarray[2][2]="11-23-10.mp6 ";
$camozerkaarray[3][1]="192.168.13.16";
$camozerkaarray[3][2]="11-23-59.avi ";
$camozerkaarray[4][1]="192.168.13.19";
$camozerkaarray[4][2]="11-17-32.avi ";
$camozerkaarray[5][1]="192.168.13.202";


костыльный скрипт я написал, на примере одного каталога, а дальше приходится вручную править путь

Кликните здесь для просмотра всего текста

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
#!/bin/bash
#Date='`date +%F`'
cp /dev/null  /home/admin/file2
#D=`ls -t | head -1`
Z='$camozerkaarray'
 
cd /var/www/html/cam_record/`date +%F`/192.168.13.11*/*/
D=`ls -t | head -1`
 
cat >> /home/admin/file2 <<EOF
$Z[0][1]="192.168.13.11";
$Z[0][2]="$D";
EOF
0
Эксперт NIX
 Аватар для Marinero
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
26.10.2019, 21:16
Стоит использовать find
0
 Аватар для volodin661
6671 / 2264 / 346
Регистрация: 10.12.2013
Сообщений: 7,827
26.10.2019, 23:26
Лучший ответ Сообщение было отмечено politoto как решение

Решение

стоит использовать человеческий кросс-платформенный powershell
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.10.2019, 23:26
Помогаю со студенческими работами здесь

В ярлыках браузеров emorhc.bat rehcnual.bat xoferif.bat erolpxei.bat
В ярлыках браузеров встроились вирусы и при открытии открывается реклама

Exe.rehcnual.bat, exe.erolpxei.bat, exe.emorhc.bat итд
добрый день! в конце мая поймала заразу, которая поставила мне кучу хлама от мыла, браузер амиго и приписала exe.rehcnual.bat,...

Запуск файла в директории с .bat, когда .bat запущен от имени администратора
Здравствуйте. Имею бат, он должен запускать файл &quot;&lt;тут директория батника&gt;\n1.bat&quot;. Но если даже вписывать cd &quot;%~dp0&quot; и...

Как создать .bat файл с рандомным именем, используя bat-ник?
Как создать .bat файл с рандомним именем (желательно Bomba_1, Bomba_2, и так далее) используя bat-ник и да чтобы в батнике было написано...

Один bat-файл запускает по очереди два других bat-файла
Имеются две папки в одной драйвера в второй программы решил сделать установку этого хозяйства с командной строки в автоматическом режиме....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru