Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: Tesy 10. 05. 2016, 12:32:01

Název: Linux shell script na windows
Přispěvatel: Tesy 10. 05. 2016, 12:32:01
Dobry den, uz 5 dni se snazim tyto 3x skripty predelat do bataku nebo do powershellu. Ale marne,
me znalosti na to nestaci. Najde se tady nekdo natolik zkuseny ze by me s tim pomohl nebo dokonce ze by to dokazal predelat?



Skript1=build-electrum-git.sh
Kód: [Vybrat]
#!/bin/bash

# You probably need to update only this link
ELECTRUM_GIT_URL=git://github.com/spesmilo/electrum.git
BRANCH=master
NAME_ROOT=electrum


# These settings probably don't need any change
export WINEPREFIX=/opt/wine64

PYHOME=c:/python27
PYTHON="wine $PYHOME/python.exe -OO -B"


# Let's begin!
cd `dirname $0`
set -e

cd tmp

if [ -d "electrum-git" ]; then
    # GIT repository found, update it
    echo "Pull"
    cd electrum-git
    git checkout master
    git pull
    cd ..
else
    # GIT repository not found, clone it
    echo "Clone"
    git clone -b $BRANCH $ELECTRUM_GIT_URL electrum-git
fi

cd electrum-git
VERSION=`git describe --tags`
echo "Last commit: $VERSION"

cd ..

rm -rf $WINEPREFIX/drive_c/electrum
cp -r electrum-git $WINEPREFIX/drive_c/electrum
cp electrum-git/LICENCE .

# add python packages (built with make_packages)
cp -r ../../../packages $WINEPREFIX/drive_c/electrum/

# add locale dir
cp -r ../../../lib/locale $WINEPREFIX/drive_c/electrum/lib/

# Build Qt resources
wine $WINEPREFIX/drive_c/Python27/Lib/site-packages/PyQt4/pyrcc4.exe C:/electrum/icons.qrc -o C:/electrum/lib/icons_rc.py
wine $WINEPREFIX/drive_c/Python27/Lib/site-packages/PyQt4/pyrcc4.exe C:/electrum/icons.qrc -o C:/electrum/gui/qt/icons_rc.py

cd ..

rm -rf dist/

# build standalone version
$PYTHON "C:/pyinstaller/pyinstaller.py" --noconfirm --ascii -w deterministic.spec

# build NSIS installer
# $VERSION could be passed to the electrum.nsi script, but this would require some rewriting in the script iself.
wine "$WINEPREFIX/drive_c/Program Files (x86)/NSIS/makensis.exe" /DPRODUCT_VERSION=$VERSION electrum.nsi

cd dist
mv electrum.exe $NAME_ROOT-$VERSION.exe
mv electrum-setup.exe $NAME_ROOT-$VERSION-setup.exe
mv electrum $NAME_ROOT-$VERSION
zip -r $NAME_ROOT-$VERSION.zip $NAME_ROOT-$VERSION
cd ..

# build portable version
cp portable.patch $WINEPREFIX/drive_c/electrum
pushd $WINEPREFIX/drive_c/electrum
patch < portable.patch
popd
$PYTHON "C:/pyinstaller/pyinstaller.py" --noconfirm --ascii -w deterministic.spec
cd dist
mv electrum.exe $NAME_ROOT-$VERSION-portable.exe
cd ..

echo "Done."

Skript2=deterministic.spec
Kód: [Vybrat]
# -*- mode: python -*-

home = 'C:\\electrum\\'

# We don't put these files in to actually include them in the script but to make the Analysis method scan them for imports
a = Analysis([home+'electrum',
              home+'gui/qt/main_window.py',
              home+'gui/text.py',
              home+'lib/util.py',
              home+'lib/wallet.py',
              home+'lib/simple_config.py',
              home+'lib/bitcoin.py',
              home+'lib/dnssec.py',
              home+'lib/commands.py',
              home+'plugins/cosigner_pool/qt.py',
              home+'plugins/email_requests/qt.py',
              home+'plugins/trezor/qt.py',
              home+'plugins/keepkey/qt.py',
              home+'plugins/ledger/qt.py',
              home+'packages/requests/utils.py'
              ],
             pathex=[home+'lib', home+'gui', home+'plugins', home+'packages'],
             hiddenimports=['lib', 'gui'],
             hookspath=[])

##### include folder in distribution #######
def extra_datas(mydir):
    def rec_glob(p, files):
        import os
        import glob
        for d in glob.glob(p):
            if os.path.isfile(d):
                files.append(d)
            rec_glob("%s/*" % d, files)
    files = []
    rec_glob("%s/*" % mydir, files)
    extra_datas = []
    for f in files:
        d = f.split('\\')
        t = ''
        for a in d[2:]:
            if len(t)==0:
                t = a
            else:
                t = t+'\\'+a
        extra_datas.append((t, f, 'DATA'))

    return extra_datas
###########################################

# append dirs

# cacert.pem
a.datas += [ ('requests/cacert.pem', home+'packages/requests/cacert.pem', 'DATA') ]

# Py folders that are needed because of the magic import finding
a.datas += extra_datas(home+'gui')
a.datas += extra_datas(home+'lib')
a.datas += extra_datas(home+'plugins')
a.datas += extra_datas(home+'packages')

pyz = PYZ(a.pure)
exe = EXE(pyz,
          a.scripts,
          a.binaries,
          a.datas,
          name=os.path.join('build\\pyi.win32\\electrum', 'electrum.exe'),
          debug=False,
          strip=None,
          upx=False,
          icon=home+'icons/electrum.ico',
          console=False)
          # The console True makes an annoying black box pop up, but it does make Electrum output command line commands, with this turned off no output will be given but commands can still be used

coll = COLLECT(exe,
               a.binaries,
               a.zipfiles,
               a.datas,
               strip=None,
               upx=True,
               debug=False,
               icon=home+'icons/electrum.ico',
               console=False,
               name=os.path.join('dist', 'electrum'))

Skript3=portable.patch
Kód: [Vybrat]
diff --git a/electrum b/electrum
index 8c972c6..46903b7 100755
--- a/electrum
+++ b/electrum
@@ -454,6 +454,8 @@ if __name__ == '__main__':
         if config_options.get('server'):
             config_options['auto_connect'] = False
 
+    config_options['portable'] = True
+
     if config_options.get('portable'):
         config_options['electrum_path'] = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'electrum_data')
 
Název: Re:Linux shell script na windows
Přispěvatel: mikrom 10. 05. 2016, 21:28:31
uz 5 dni se snazim tyto 3x skripty predelat do bataku nebo do powershellu.
Jednoduchsie je nainstalovat si MSYS (http://www.mingw.org/wiki/msys) a skripty zmodifikovat.
Název: Re:Linux shell script na windows
Přispěvatel: Unknown 10. 05. 2016, 23:25:10
Unix shell neznam, ale napiste na cem jste se zasekl pri tvorbe toho BATaku a muzu poradit.
Název: Re:Linux shell script na windows
Přispěvatel: . 11. 05. 2016, 10:44:01
Vzhledem k tomu, že se v těch skriptech používá Wine, asi to bude chtít do nich zasáhnout víc.

Doporučuji nepředělávat skripty, ale jít krok za krokem a interaktivně provádět potřebnou činnost. Po každém úspěšném kroku zapíšete výsledný příkaz a parametry. Na konci (teda pokud se tam dostanete) ;) budete mít základ funkčního skriptu.
Název: Re:Linux shell script na windows
Přispěvatel: winex1 11. 05. 2016, 13:32:23
... a nebo windows 10 build 14332 ktery ma mit linux bash ... to by neslo ?

https://www.microsoft.com/en-us/software-download/windowsinsiderpreviewiso (https://www.microsoft.com/en-us/software-download/windowsinsiderpreviewiso)
Název: Re:Linux shell script na windows
Přispěvatel: none_ 11. 05. 2016, 13:51:49
... a nebo windows 10 build 14332 ktery ma mit linux bash ... to by neslo ?

https://www.microsoft.com/en-us/software-download/windowsinsiderpreviewiso (https://www.microsoft.com/en-us/software-download/windowsinsiderpreviewiso)

To by bylo hezky... Na Win 10, spoustet bash a z nej spoustet neco vine...:D
Název: Re:Linux shell script na windows
Přispěvatel: JardaP . 11. 05. 2016, 14:44:41
... a nebo windows 10 build 14332 ktery ma mit linux bash ... to by neslo ?

I ty, winex1?
Název: Re:Linux shell script na windows
Přispěvatel: j 11. 05. 2016, 17:37:35
2Tesy: Problem spociva v tom, ze to nejsou scripty. Pouziva to spoustu dalsich nastroju, ktery ve widlich trebas vubec neexistujou. Takze jediny co stim mzues udelat je to co bylo receno - napsat to znova od nuly pro widle.
Název: Re:Linux shell script na windows
Přispěvatel: Unknown 11. 05. 2016, 20:05:23
A co to tedy je kdyz to nejsou scripty? Dal bych chtel videt tu "spoustu nastroju" ktery pro Win nejsou...

Ze by bylo nejlepsi to napsat znova je ale asi pravda. Minimalne to bude rychlejsi...
Název: Re:Linux shell script na windows
Přispěvatel: JardaP . 11. 05. 2016, 20:20:00
Tak na prepisovani bashe do batu radsi rovnou zapomente, to je naprosta tragedie, ktera vas privede do blazince. MS batch soubory jsou totalni stredovek, i kdyz si nejsem jisty, jestli i tehdy uz nemeli lepsi. To se spis podivejte, kde sehnat bash pro Widle, pokud tedy nemate ty uzasne desitky, kde by uz mel nejak byt.

Lael tady tvrdi, ze Powershel je uzasny a da se v nem udelat uplne cokoliv, takze pokud na to mate zaludek, tak se zamerte spis na to. Nebo neni k mani i nejaky python pro Widle? Idealne jako prenositelna aplikace, aby se to nemuselo vsude instalovat, pokud to ma jet na vice strojich.
Název: Re:Linux shell script na windows
Přispěvatel: Unknown 11. 05. 2016, 21:40:15
Tak na prepisovani bashe do batu radsi rovnou zapomente, to je naprosta tragedie, ktera vas privede do blazince. MS batch soubory jsou totalni stredovek, i kdyz si nejsem jisty, jestli i tehdy uz nemeli lepsi. To se spis podivejte, kde sehnat bash pro Widle, pokud tedy nemate ty uzasne desitky, kde by uz mel nejak byt.

Nevíte co píšete, dělal jsem ve windows shellu (soubory s priponou .cmd, neplest se zastaralymi .bat soubory) veci o stovkách radku bez větších problemu.
Název: Re:Linux shell script na windows
Přispěvatel: JardaP . 11. 05. 2016, 22:37:51
Nevíte co píšete, dělal jsem ve windows shellu (soubory s priponou .cmd, neplest se zastaralymi .bat soubory) veci o stovkách radku bez větších problemu.

Aha. Uz jsem se chtel vydesit, ze se ve Widlich neco zmenilo. Ale podle Guuglu to na to moc nevypada. To mate na mysli tohle? http://commandwindows.com/windows7-commands.htm . Pokud ano, tak rozdil s Widlemi NT, kdyz jsem v tom naposledy delal, vidim minimalni. Zda se, ze nektere veci z Resource Kitu presunuli standarne do Widli, tot vse. Nicmene tam treba porad nevidim, cim by clovek udelal cyklus, krome prikazu for /f, ze ktereho by se clovek posral. Krome toho predpoklada, ze nadale pretrvavaji stejne problemy, jako v NT. Napriklad nefunguje presmerovani vystupu pres rouru do nasledujiciho prikazu. Pricemz predpokladam, ze rada prikazu nadale ignoruje standardni vystup a tiskne si vystupy po svem, ze to ani nejde presmerovat do souboru. Tez pochybuji, ze by se nekdo pokusil sjednotit vystupy prikazu do jakehosi jednotneho stylu a je to tedy nadale ve stylu jeden prikaz oddeluje mezerami, druhy tabelatory. Vystupy jsou zasrane informacemi, ktere skript nezajimaji, viz treba prikaz dir - srobnejte s ls. Vetsina prikazu patrne nadale poskytuje vystupu ve forme bud zcela neparsovatelne nebo parsovatelne jen se stachanovskym nasazenim.

Ano, naprogramovat se v tom ledacos da. Ale ty nervy s tim a ta prace! Vysledek bude desetkrat delsi, nez v nejakem NIXovem shellu a bude to rozhozene v hafu souboru, protoze nejake funkce a takove veci, se v tom udelat nedaji. Jiste, ve srovnani s MS DOSem je to pokrok. Ale ve srovnani s libovolnym NIXovym shellem je to nepricetna sracka.

Tedy jestli mi Guugl nezatajil nejake zasadni inovace, tak s tim, co mi predhodil, se muzete jit zahrabat. V tom se normalne psat neda, ledaze byste byl masochista a nevadilo vam, ze se kazdy den aspon jednou poserete.

BTW, ty vase veci o stovkach radku by v Bashi mozna vysly na desitky i min. Ja v tom take napsal sracky o stovkach radku a rikam: jiz nikdy. Proto pisi, ze tazatel ma na prepis do widlobatche zapomenout. V tom se totiz neda najit zadna obdoba NIXove konstrukce a clovek bude travit vetsinu casu tim, ze bude vymyslet, jak by to obesel a nasledne tim, jak by proparsoval vystupy a nezesilel. Ve vysledku mozna sesmoli neco, co i funguje, ale nikdo nebude vedet proc, protoze se v tom bordelu uz ani on sam nevyzna.

Jestli tuhle MSsracku chcete srovnavat s nekterym shellem na Linuxu, tak vam muselo preskocit anebo jste v tom linuxovem shellu nikdy nenapsal nebo aspon nevidel ani radku.
Název: Re:Linux shell script na windows
Přispěvatel: Ondrej Nemecek 11. 05. 2016, 23:03:25
Tak na prepisovani bashe do batu radsi rovnou zapomente, to je naprosta tragedie, ktera vas privede do blazince. MS batch soubory jsou totalni stredovek, i kdyz si nejsem jisty, jestli i tehdy uz nemeli lepsi. To se spis podivejte, kde sehnat bash pro Widle, pokud tedy nemate ty uzasne desitky, kde by uz mel nejak byt.

Nevíte co píšete, dělal jsem ve windows shellu (soubory s priponou .cmd, neplest se zastaralymi .bat soubory) veci o stovkách radku bez větších problemu.

Teď ale ještě záleží, zda jste totéž programoval v bashi. Moje zkušenost je ta, že bash má mnohem lepší možnosti, než cmd. U powershellu to může být zas opačně, ale ten neznám, takže nevím.
Název: Re:Linux shell script na windows
Přispěvatel: Unknown 12. 05. 2016, 01:15:08
Nevíte co píšete, dělal jsem ve windows shellu (soubory s priponou .cmd, neplest se zastaralymi .bat soubory) veci o stovkách radku bez větších problemu.

Aha. Uz jsem se chtel vydesit, ze se ve Widlich neco zmenilo. Ale podle Guuglu to na to moc nevypada. To mate na mysli tohle? http://commandwindows.com/windows7-commands.htm . Pokud ano, tak rozdil s Widlemi NT, kdyz jsem v tom naposledy delal, vidim minimalni. Zda se, ze nektere veci z Resource Kitu presunuli standarne do Widli, tot vse. Nicmene tam treba porad nevidim, cim by clovek udelal cyklus, krome prikazu for /f, ze ktereho by se clovek posral. Krome toho predpoklada, ze nadale pretrvavaji stejne problemy, jako v NT. Napriklad nefunguje presmerovani vystupu pres rouru do nasledujiciho prikazu. Pricemz predpokladam, ze rada prikazu nadale ignoruje standardni vystup a tiskne si vystupy po svem, ze to ani nejde presmerovat do souboru. Tez pochybuji, ze by se nekdo pokusil sjednotit vystupy prikazu do jakehosi jednotneho stylu a je to tedy nadale ve stylu jeden prikaz oddeluje mezerami, druhy tabelatory. Vystupy jsou zasrane informacemi, ktere skript nezajimaji, viz treba prikaz dir - srobnejte s ls. Vetsina prikazu patrne nadale poskytuje vystupu ve forme bud zcela neparsovatelne nebo parsovatelne jen se stachanovskym nasazenim.

Ano, naprogramovat se v tom ledacos da. Ale ty nervy s tim a ta prace! Vysledek bude desetkrat delsi, nez v nejakem NIXovem shellu a bude to rozhozene v hafu souboru, protoze nejake funkce a takove veci, se v tom udelat nedaji. Jiste, ve srovnani s MS DOSem je to pokrok. Ale ve srovnani s libovolnym NIXovym shellem je to nepricetna sracka.

Tedy jestli mi Guugl nezatajil nejake zasadni inovace, tak s tim, co mi predhodil, se muzete jit zahrabat. V tom se normalne psat neda, ledaze byste byl masochista a nevadilo vam, ze se kazdy den aspon jednou poserete.

BTW, ty vase veci o stovkach radku by v Bashi mozna vysly na desitky i min. Ja v tom take napsal sracky o stovkach radku a rikam: jiz nikdy. Proto pisi, ze tazatel ma na prepis do widlobatche zapomenout. V tom se totiz neda najit zadna obdoba NIXove konstrukce a clovek bude travit vetsinu casu tim, ze bude vymyslet, jak by to obesel a nasledne tim, jak by proparsoval vystupy a nezesilel. Ve vysledku mozna sesmoli neco, co i funguje, ale nikdo nebude vedet proc, protoze se v tom bordelu uz ani on sam nevyzna.

Jestli tuhle MSsracku chcete srovnavat s nekterym shellem na Linuxu, tak vam muselo preskocit anebo jste v tom linuxovem shellu nikdy nenapsal nebo aspon nevidel ani radku.

Moh bych to radek po radku vyvratit, ale prisel jsem prave z baru v povznesene nalade a nemam duvod si ji kazit. Tak jen zopakuji ze nevite o cem pisete....
Název: Re:Linux shell script na windows
Přispěvatel: Unknown 12. 05. 2016, 09:40:18
Tak na prepisovani bashe do batu radsi rovnou zapomente, to je naprosta tragedie, ktera vas privede do blazince. MS batch soubory jsou totalni stredovek, i kdyz si nejsem jisty, jestli i tehdy uz nemeli lepsi. To se spis podivejte, kde sehnat bash pro Widle, pokud tedy nemate ty uzasne desitky, kde by uz mel nejak byt.

Nevíte co píšete, dělal jsem ve windows shellu (soubory s priponou .cmd, neplest se zastaralymi .bat soubory) veci o stovkách radku bez větších problemu.

Teď ale ještě záleží, zda jste totéž programoval v bashi. Moje zkušenost je ta, že bash má mnohem lepší možnosti, než cmd. U powershellu to může být zas opačně, ale ten neznám, takže nevím.

Jenze tenhle thread neni o tom jestli je lepsi bash nebo win shell, tazatel chtel poradit s prevodem bash scriptu do win console, cehoz zde nekteri zneuzili k off-topic protlacovani svych priorit v shell scriptingu a pomluvam win shellu i za cenu prokazatelnych nepravd. Ale to je u bLivnuxaku zrejme normalni, naflusat na MS za jakoukoliv cenu...

A o deset let stare objektove pipe (powershell) Linux jeste ani neslysel (pokud pomineme veci tretich stran jako Python)
Název: Re:Linux shell script na windows
Přispěvatel: hawran diskuse 12. 05. 2016, 10:48:38
Tak na prepisovani bashe do batu radsi rovnou zapomente, to je naprosta tragedie, ktera vas privede do blazince. MS batch soubory jsou totalni stredovek, i kdyz si nejsem jisty, jestli i tehdy uz nemeli lepsi. To se spis podivejte, kde sehnat bash pro Widle, pokud tedy nemate ty uzasne desitky, kde by uz mel nejak byt.

Nevíte co píšete, dělal jsem ve windows shellu (soubory s priponou .cmd, neplest se zastaralymi .bat soubory) veci o stovkách radku bez větších problemu.

Teď ale ještě záleží, zda jste totéž programoval v bashi. Moje zkušenost je ta, že bash má mnohem lepší možnosti, než cmd. U powershellu to může být zas opačně, ale ten neznám, takže nevím.

Jenze tenhle thread neni o tom jestli je lepsi bash nebo win shell, tazatel chtel poradit s prevodem bash scriptu do win console, cehoz zde nekteri zneuzili k off-topic protlacovani svych priorit v shell scriptingu a pomluvam win shellu i za cenu prokazatelnych nepravd. Ale to je u bLivnuxaku zrejme normalni, naflusat na MS za jakoukoliv cenu...

A o deset let stare objektove pipe (powershell) Linux jeste ani neslysel (pokud pomineme veci tretich stran jako Python)

Laeli, běž už konečně do (_!_).
Název: Re:Linux shell script na windows
Přispěvatel: Vlado 12. 05. 2016, 11:41:44
Ahoj.

Toto je "otrocký" prepis prvého skriptu. Nielen že je takmer isté, že nebude fungovať, mohol by dokonca škodiť (Varovanie!). Ale môžeš ho použiť ako základ pre ladenie  :)

build-electrum-git.cmd:
Kód: [Vybrat]
@echo off

REM You probably need to update only this link
set ELECTRUM_GIT_URL=git://github.com/spesmilo/electrum.git
set BRANCH=master
set NAME_ROOT=electrum

REM These settings probably don't need any change

set PYHOME=c:\python27
PYTHON=%PYHOME%\python.exe -OO -B


REM Let's begin!
cd %~dp0
rem Toto nema ekvivalent (!!!): set -e

cd tmp

set T=electrum-git\__test__%RANDOM%
echo. %T%
if exist %T% goto :GIT_REPO_EXIST
    REM GIT repository not found, clone it
    echo Clone
    git clone -b %BRANCH% %ELECTRUM_GIT_URL% electrum-git
goto :GIT_REPO_DONE
:GIT_REPO_EXIST
del %T%
    REM GIT repository found, update it
    echo Pull
    cd electrum-git
    git checkout master
    git pull
    cd ..
:GIT_REPO_DONE

cd electrum-git
set VERSION=
for /F "usebackq tokens=*" %%Z in (`git describe --tags`) do set VERSION=%%Z
echo Last commit: %VERSION%

cd ..

del /F /S /Q C:\electrum
xcopy electrum-git C:\electrum /S /Q /H /R /Y
copy /b electrum-git/LICENCE .

# add python packages (built with make_packages)
xcopy ../../../packages C:\electrum\ /S /Q /H /R /Y

# add locale dir
xcopy ../../../lib/locale C:\electrum\lib\ /S /Q /H /R /Y

# Build Qt resources
C:\Python27\Lib\site-packages\PyQt4\pyrcc4.exe C:\electrum\icons.qrc -o C:\electrum\lib\icons_rc.py
C:\Python27\Lib\site-packages\PyQt4\pyrcc4.exe C:\electrum\icons.qrc -o C:\electrum\gui\qt\icons_rc.py

cd ..

del /F /S /Q dist/

# build standalone version
$PYTHON C:\pyinstaller\pyinstaller.py --noconfirm --ascii -w deterministic.spec

# build NSIS installer
# $VERSION could be passed to the electrum.nsi script, but this would require some rewriting in the script iself.
C:\Program Files (x86)\NSIS\makensis.exe" /DPRODUCT_VERSION=%VERSION% electrum.nsi

cd dist
move electrum.exe %NAME_ROOT%-%VERSION%.exe
move electrum-setup.exe %NAME_ROOT%-%VERSION%-setup.exe
move electrum %NAME_ROOT%-%VERSION%
zip -r %NAME_ROOT%-%VERSION%.zip %NAME_ROOT%-%VERSION%
cd ..

# build portable version
copy /b portable.patch C:\electrum
pushd C:\electrum
patch < portable.patch
popd
$PYTHON C:\pyinstaller\pyinstaller.py --noconfirm --ascii -w deterministic.spec
cd dist
move electrum.exe %NAME_ROOT%-%VERSION%-portable.exe
cd ..

echo Done.


Druhý skript je python, nemyslím si, že by potreboval nejaké úpravy (nepoznám python).
Tretia vec je diff, tiež bez úprav.
Název: Re:Linux shell script na windows
Přispěvatel: Vlado 12. 05. 2016, 11:44:14
Sakra, v druhej polovici som zabudol prepísať komentáre # na REM :-)
Název: Re:Linux shell script na windows
Přispěvatel: Unknown 12. 05. 2016, 12:56:22
rem Toto nema ekvivalent (!!!): set -e

Pokud dobre chapu vyznam "-e" ze to pri jakekoliv chybe okamzite ukonci script, da se to nahradit nejak takhle:

command || exit /B

Pokud by tam byly nejake CALLy (jakoze je tam aktualne nevidim), je treba EXITy prislusne retezit.


Název: Re:Linux shell script na windows
Přispěvatel: JardaP . 12. 05. 2016, 17:38:29
Jenze tenhle thread neni o tom jestli je lepsi bash nebo win shell, tazatel chtel poradit s prevodem bash scriptu do win console, cehoz zde nekteri zneuzili k off-topic protlacovani svych priorit v shell scriptingu a pomluvam win shellu i za cenu prokazatelnych nepravd. Ale to je u bLivnuxaku zrejme normalni, naflusat na MS za jakoukoliv cenu...

Prosim te, nebud skromny a prispej svou trochou k osvete a napis, cim je ten batch v cmd tak dobry, ze jsem to nepochopil. Tazateli to jiste pomuze najit spravnou cestu, jak ty skripty prepsat. Co me se tyka, tak prepisovani do cmd by bylo o nervy a je lepsi se o to nepokouset a radsi se rovnou protrpet Powershellem.
Název: Re:Linux shell script na windows
Přispěvatel: j 12. 05. 2016, 17:59:08
A co to tedy je kdyz to nejsou scripty? Dal bych chtel videt tu "spoustu nastroju" ktery pro Win nejsou...

Ze by bylo nejlepsi to napsat znova je ale asi pravda. Minimalne to bude rychlejsi...
On je bezne ve widlich trebas diff? Vazne?

...
Python i perl ... a da se to pak pustit proste jako parametr ty binarky ... jenze stejne bys to musel prepsat a stejne narazis na to, ze nektery veci proste nemas.

Nevíte co píšete, dělal jsem ve windows shellu (soubory s priponou .cmd, neplest se zastaralymi .bat soubory) veci o stovkách radku bez větších problemu.
Jestli tu nekdo absolutne netusi tak zjevne ty, cmd je alias pro bat.

Tedy jestli mi Guugl nezatajil nejake zasadni inovace, tak s tim, co mi predhodil, se muzete jit zahrabat. V tom se normalne psat neda, ledaze byste byl masochista a nevadilo vam, ze se kazdy den aspon jednou poserete.
Neboj, nezatajil ... je to porad stejna sracka. A PS je 10x horsi. Protoze tam sice hypoteticky muzes delat lecos, ale na na kazdym druhym kroku narazis na to, ze nemas nejakej modul, kterej neni defaultni soucasti widli ... takze to co udelat chces, udelat nejde. A samo, jako admin nemas pravo pustit script ... treba ze sitovyho disku. To ma prece logiku ne?

Název: Re:Linux shell script na windows
Přispěvatel: Unknown 12. 05. 2016, 18:46:23
A co to tedy je kdyz to nejsou scripty? Dal bych chtel videt tu "spoustu nastroju" ktery pro Win nejsou...

Ze by bylo nejlepsi to napsat znova je ale asi pravda. Minimalne to bude rychlejsi...
On je bezne ve widlich trebas diff? Vazne?

...
Python i perl ... a da se to pak pustit proste jako parametr ty binarky ... jenze stejne bys to musel prepsat a stejne narazis na to, ze nektery veci proste nemas.

Nevíte co píšete, dělal jsem ve windows shellu (soubory s priponou .cmd, neplest se zastaralymi .bat soubory) veci o stovkách radku bez větších problemu.
Jestli tu nekdo absolutne netusi tak zjevne ty, cmd je alias pro bat.

Tedy jestli mi Guugl nezatajil nejake zasadni inovace, tak s tim, co mi predhodil, se muzete jit zahrabat. V tom se normalne psat neda, ledaze byste byl masochista a nevadilo vam, ze se kazdy den aspon jednou poserete.
Neboj, nezatajil ... je to porad stejna sracka. A PS je 10x horsi. Protoze tam sice hypoteticky muzes delat lecos, ale na na kazdym druhym kroku narazis na to, ze nemas nejakej modul, kterej neni defaultni soucasti widli ... takze to co udelat chces, udelat nejde. A samo, jako admin nemas pravo pustit script ... treba ze sitovyho disku. To ma prece logiku ne?

zkuste prikaz FC, pokud Vam nedostacuje tak http://gnuwin32.sourceforge.net/packages/diffutils.htm

CMD neni alias pro BAT, pripona cmd oznacuje scripty pro 32bitovy interpret cmd.exe, pripona bat oznacuje soubory pro 16bitovy command.com (v 64bitovych win uz neni obsazen). 32bitova konzole ma ruzne urovne rozsireni, ktere zjistite vypsanim promenne %cmdextversion% a ktere nejsou zpetne kompatibilni.

Ze nelze pustit script ze sitoveho disku jste vzal kde?


C:\>echo echo ahoj > Z:\test.cmd

C:\>z:\test.cmd

C:\>echo ahoj
ahoj

Nejake dalsi bLivnuxacke lzi by nebyly?
Název: Re:Linux shell script na windows
Přispěvatel: mikrom 12. 05. 2016, 20:49:16
Jednoduchsie je nainstalovat si MSYS (http://www.mingw.org/wiki/msys) a skripty zmodifikovat.
MSYS obsahuje bash a daju sa  z neho priamo spustat aj windows *.exe.
Takze mas Bash pre Windows a ten skript by mal s malymi upravami bezat.

Na spojazdnenie tych skriptov bude zrejme treba stiahnut aj git for windows (https://git-for-windows.github.io/), ktory by mal obsahovat taky isty Bash ako MinGW/MSYS.

Co sa tyka porovnania, Windows cmd je neporovnatelne horsi ako Unix shell.
Kym som nepoznal MSYS, pouzival som dlhe roky na windows REXX, ktorym sa da dobre rozsirit slaby prikazovy jazyk windows.

PowerShell som skusal tiez - a viac krat, ale vzdy som mal z neho dost zly dojem.
Název: Re:Linux shell script na windows
Přispěvatel: JardaP . 12. 05. 2016, 21:13:20
CMD neni alias pro BAT, pripona cmd oznacuje scripty pro 32bitovy interpret cmd.exe, pripona bat oznacuje soubory pro 16bitovy command.com (v 64bitovych win uz neni obsazen). 32bitova konzole ma ruzne urovne rozsireni, ktere zjistite vypsanim promenne %cmdextversion% a ktere nejsou zpetne kompatibilni.

To je uplne jedno. Dulezite je to, ze i kdyz to budu psat do souboru s priponou cmd, porad budu mit k dispozici naprosto desny skriptovaci jazyk, tu i tam pozaplatovany prikazy, ktere kdysi byly extra v Resource Kitu.
Název: Re:Linux shell script na windows
Přispěvatel: j 13. 05. 2016, 09:36:46
...
Nejake dalsi bLivnuxacke lzi by nebyly?
Kreten jako ty kterej netusi co zvani nemuze samo pochopit, ze je rec o powershellu zejo ...
cmd JE bat, vzdycky byl.
Název: Re:Linux shell script na windows
Přispěvatel: Unknown 13. 05. 2016, 11:15:43
...
Nejake dalsi bLivnuxacke lzi by nebyly?
Kreten jako ty kterej netusi co zvani nemuze samo pochopit, ze je rec o powershellu zejo ...
cmd JE bat, vzdycky byl.

Nemate pravdu. Pripona shell scriptu v systemu Windows rozhoduje ktery interpret bude pouzit pro jeho beh. Interpret cmd.exe je vyspelejsi nastupce programu command.com Ve verzich windows s jadrem NT je defaultni interpret scriptu obou typu program cmd.exe, command.com je pritomny pouze ve 32bitovych verzich OS s jadrem NT, ale jeho pouziti musite pripadne specifikovat (defaultne se nepouziva). V 64bitovych verzich OS uz neni vubec pritomen.


A script that is designed for cmd.exe can be named .cmd to prevent accidental execution on Windows 9x.
Here is a list of cmd.exe features that are not supported by command.com:

Long filenames (exceeding the 8.3 format)
Command history
Tab completion
Escape character: ^ (Use for: \ & | > < ^)
Directory stack: PUSHD/POPD
Integer arithmetic: SET /A i+=1
Search/Replace/Substring: SET %varname:expression%
Command substitution: FOR /F (existed before, has been enhanced)
Functions: CALL :label

http://stackoverflow.com/questions/148968/windows-batch-files-bat-vs-cmd/149918#149918
Název: Re:Linux shell script na windows
Přispěvatel: JardaP . 13. 05. 2016, 11:23:35
Here is a list of cmd.exe features that are not supported by command.com:

Long filenames (exceeding the 8.3 format)
Command history
Tab completion
Escape character: ^ (Use for: \ & | > < ^)
Directory stack: PUSHD/POPD
Integer arithmetic: SET /A i+=1
Search/Replace/Substring: SET %varname:expression%
Command substitution: FOR /F (existed before, has been enhanced)
Functions: CALL :label
[/quote]

Tak to jo, tohle z toho dela skvely skriptovaci jazyk. Uz se nemuzu dockat, az to nekdo naportuje na Linux.
Název: Re:Linux shell script na windows
Přispěvatel: nobody(ten pravej) 13. 05. 2016, 12:30:29
Tak to jo, tohle z toho dela skvely skriptovaci jazyk. Uz se nemuzu dockat, az to nekdo naportuje na Linux.

wine cmd
a muzes slavit nebo mlatit hlavou do zdi :-D
Název: Re:Linux shell script na windows
Přispěvatel: mh 22. 06. 2016, 21:51:42
Jedina odpoved, ktera opravdu tazateli pomuze, je ta od "Vlado", s tim, ze opravdu chybi komentare v DOS like stylu od radku:
# add python packages (built with make_packages)

Ahoj.

Toto je "otrocký" prepis prvého skriptu. Nielen že je takmer isté, že nebude fungovať, mohol by dokonca škodiť (Varovanie!). Ale môžeš ho použiť ako základ pre ladenie  :)

build-electrum-git.cmd:
Kód: [Vybrat]
@echo off

REM You probably need to update only this link
set ELECTRUM_GIT_URL=git://github.com/spesmilo/electrum.git
set BRANCH=master
set NAME_ROOT=electrum

REM These settings probably don't need any change

set PYHOME=c:\python27
PYTHON=%PYHOME%\python.exe -OO -B


REM Let's begin!
cd %~dp0
rem Toto nema ekvivalent (!!!): set -e

cd tmp

set T=electrum-git\__test__%RANDOM%
echo. %T%
if exist %T% goto :GIT_REPO_EXIST
    REM GIT repository not found, clone it
    echo Clone
    git clone -b %BRANCH% %ELECTRUM_GIT_URL% electrum-git
goto :GIT_REPO_DONE
:GIT_REPO_EXIST
del %T%
    REM GIT repository found, update it
    echo Pull
    cd electrum-git
    git checkout master
    git pull
    cd ..
:GIT_REPO_DONE

cd electrum-git
set VERSION=
for /F "usebackq tokens=*" %%Z in (`git describe --tags`) do set VERSION=%%Z
echo Last commit: %VERSION%

cd ..

del /F /S /Q C:\electrum
xcopy electrum-git C:\electrum /S /Q /H /R /Y
copy /b electrum-git/LICENCE .

# add python packages (built with make_packages)
xcopy ../../../packages C:\electrum\ /S /Q /H /R /Y

# add locale dir
xcopy ../../../lib/locale C:\electrum\lib\ /S /Q /H /R /Y

# Build Qt resources
C:\Python27\Lib\site-packages\PyQt4\pyrcc4.exe C:\electrum\icons.qrc -o C:\electrum\lib\icons_rc.py
C:\Python27\Lib\site-packages\PyQt4\pyrcc4.exe C:\electrum\icons.qrc -o C:\electrum\gui\qt\icons_rc.py

cd ..

del /F /S /Q dist/

# build standalone version
$PYTHON C:\pyinstaller\pyinstaller.py --noconfirm --ascii -w deterministic.spec

# build NSIS installer
# $VERSION could be passed to the electrum.nsi script, but this would require some rewriting in the script iself.
C:\Program Files (x86)\NSIS\makensis.exe" /DPRODUCT_VERSION=%VERSION% electrum.nsi

cd dist
move electrum.exe %NAME_ROOT%-%VERSION%.exe
move electrum-setup.exe %NAME_ROOT%-%VERSION%-setup.exe
move electrum %NAME_ROOT%-%VERSION%
zip -r %NAME_ROOT%-%VERSION%.zip %NAME_ROOT%-%VERSION%
cd ..

# build portable version
copy /b portable.patch C:\electrum
pushd C:\electrum
patch < portable.patch
popd
$PYTHON C:\pyinstaller\pyinstaller.py --noconfirm --ascii -w deterministic.spec
cd dist
move electrum.exe %NAME_ROOT%-%VERSION%-portable.exe
cd ..

echo Done.


Druhý skript je python, nemyslím si, že by potreboval nejaké úpravy (nepoznám python).
Tretia vec je diff, tiež bez úprav.

Pomohlo to? Nebo je potreba dalsi pomoci?
Neslo by to v bashi pres CygWin (jednou jsem jednoho kolegu slysel jinemu kolegovi rikat: "Az se Te nekdo zepta, co je nejlepsi program na Windows, tak odpovez, ze to je CygWin") :)
Název: Re:Linux shell script na windows
Přispěvatel: Petr 23. 06. 2016, 01:17:50
...
cmd JE bat, vzdycky byl.

Spíše nikdy nebyl, ne? Princip cmd zkopírovali do MSW z OS/2, ale tam se v něm dalo programovat v REXXu, což samozřejmě MS od IBM nechtěl či nemohl zkopírovat (ač existuje interpret Regina).

Název: Re:Linux shell script na windows
Přispěvatel: pr 23. 06. 2016, 06:17:37
Ach jo, to je flame...
Zjistěte si, jak udělat hybridní powershell/cmd script - vyřeší to problémy se spouštěním scriptu...

no a přepsat do powershell... je to sice vopruz a kopa nových věcí, co se musí pochopit...

ale v powershell máte sílu celého .NET, dokonce můžete načíst přímo ve scriptu C# zdrojový kód...
Název: Re:Linux shell script na windows
Přispěvatel: x 24. 06. 2016, 07:17:23
pr> jenze to tady nechteji slyset, ze svet neni cernobily a musis delat i s vecma co treba z politickych nebo davno neplatnych duvodu nemusis :-)

A vem si, ze se objevuji takove veci http://developerblog.redhat.com/2015/11/04/red-hat-microsoft-making-dot-net-on-linux-for-enterprises/ to musi skakat uz pak asi rovno uz oken jako burziani :D