Bu .sh betiğini bir windows çalıştırılabilir dosyasına (.bat) nasıl dönüştürebilirim?


2

İç içe geçmiş bir dizin yapısı oluşturmak için uzun zaman önce bir kabuk betiği oluşturdum ve şimdi bunu Windows makinemde kullanmak istiyorum. Bu komut dosyalarını dönüştürmenin kolay bir yolu var mı? Ya da kullanmam gereken bazı hızlı ipuçları?

#!/bin/sh
echo "Enter name of csv file"
read name
echo "Enter the PREFIX for the directory"
read prefix
c=$(echo $prefix | awk -F"/" '{print $NF}')
a=`cat ./$name`
for b in $a
do
mydir=$(echo $b | tr -d '\r' | sed -e 's/,*$//g'| sed -e 's/,/\//g')
mydir2=$(echo $mydir | sed -e 's/\//\/'$c'/g')
mydir1=$prefix$mydir2
mkdir -p $mydir1
echo "Created : `pwd`/$mydir1"
done

4
Cygwin'i yükleyin.
DavidPostill

yarasa dosyaları çalıştırılamaz. onlar sadece kabuk betikleri, tıpkı ... şey ... bash shell komutları.
Keltari

1
@Keltari: Ama bash kabuk komut vardır , adil değil ELF ikili yürütülebilir
grawity

Teşekkürler DavidPostill. Ancak uzun vadeli bir çözüm arıyorum. Cygwin'i her yere kuramayacağım ve bu yüzden sonunda onu çalıştırılabilir pencerelere dönüştürmem gerekiyor.
Çaylak

Yanıtlar:


0

Söz konusu komut dosyalarını manuel olarak yeniden yazmak dışında, komut dosyalarını dönüştürmenin gerçekten sihirli bir yolu yoktur. Windows Komut İstemi'ndeki sınırlamalar nedeniyle bu her zaman% 100 mümkün olmayabilir.

Ancak, betiği dönüştürmek yerine, belki de uygulayabilen bir windows programı edinebilirsiniz. Windows 10'unuz varsa, yeni Linux alt sistemini kullanabilirsiniz. Bunun nasıl yapılacağını açıklayan bir milyon web sayfası vardır, bu nedenle basit bir web arama yoluyla bilgi bulabilmeniz gerekir.

Windows 10 çalıştıran yapmıyorsan, ben Borne Yine SHell bir Windows uyumlu versiyonlarını öneriyoruz ve Un * x untilities (özellikle awk, cat, sed, ve trbu yukarıdaki komut gerektirecek gibi görünüyor nelerdir beri). MinGW'nin sizi (birlikte paketlenmiş) alabilirsiniz hem iyi bir sürümünü vardır burada . Kurulum programını çalıştırın, yükleyebileceğiniz çeşitli paketleri olacak "MinGW Kurulum Yöneticisi" adlı bir pencere göreceksiniz. İhtiyacınız olan tek şey "msys-base" olmalıdır (kaynak kodunu derlemeyi planlamıyorsanız), yanındaki kutuya bir onay işareti koyun. Ardından, "Kurulum" menüsüne gidin ve "Değişiklikleri Uygula" yı seçin ve beliren pencerede "Uygula" yı tıklayın.C:\MinGWC:\MinGW\msys\1.0\bin\bash.exe. Kabuk betiğinizi çalıştırmak için bu exe dosyasını kullanabilirsiniz.


-1

Aynı ihtiyaçları karşıladım. Temel olarak, Mac'imde çalışan bir kabuk betiğim var ve şimdi Windows'a çift tıklatarak çalıştırmak istiyorum. İşte Windows 10'da yaptığım şey.

Her şeyden önce, gerekli çalıştırma ilkesi verilen .Sh ile PowerShell'i çalıştırabildiğimden emin olun:. Powershell -> dir. Belki biraz .sh tweak gerekebilir.

İkincisi, bir satırlık bir .ps1 dosyası oluşturun: sh "\ shell \ script \ full \ path.sh" ("yolda boşluk varsa gereklidir").

Son olarak, tek satırlık bir yarasa dosyası oluşturun: C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ powershell.exe -executionpolicy Bypass -Dosya "\ powershell \ script \ full \ path.ps1"


Powershell ve POSIX Kabuğu tamamen farklı iki dildir. Birinin diğerinde çalışması için yazılmış herhangi bir senaryo için son derece nadir olacak. Basitçe dosya uzantısını değiştirmek bir dilden diğerine sihirli bir şekilde dönüşmez.
8,

cevabını okuduğunuzdan emin değilim. Cevabımın sadece uzantıyı değiştirerek bir dili dönüştürebileceğinizi önerdiğini sanmıyorum. Bu durumda, 'sh' komutunu kullanarak PowerShell'de bir kabuk komut dosyası çalıştırabilirsiniz.
handstar

"Ben. Ayrıca, bir Powershell betiği sarmalayıcısı oluşturma fikri, shWindows'un herhangi bir sürümünün varsayılan bir parçası olmaması dışında korkunç değildir ve OP, her yere yeni tercümanlar kurmaya devam edemeyeceklerini belirtti.
8bittree

Rename ifadesi size başkalarının da aynı şeyi yapmalarını önerdiğim izlenimini veriyorsa özür dilerim. Aksine, işe yaramayacağı için bunu yapmamaya çalışıyordum! Neyse, onu kaldırdım. Ayrıca, sh'in Windows için oldukça yeni olduğunu bilmiyordum. Gösterdiğin için teşekkürler. Cevabımda Windows sürümünü belirttim. Teşekkürler!
handstar

shWindows için kullanılabilir olma açısından , Cygwin 1995'ten beri bunu sağlamıştır, diğer kaynaklar daha da eski olabilir. Windows'a dahilsh olmak açısından (yani ek bir yazılım yüklemenizi gerektirmez): bu hiç böyle olmadı. Windows için Yıldönümü Güncelleştirmesi'ne eklenen Linux için Windows Alt Sistemi bile ek bir yükleme olsa da, varsayılan olarak dahil edilmemiştir. Muhtemelen de önemlidir: 64-bit masaüstü Windows gerektirir. Sunucu SKU'ları, Sonbahar Oluşturucu Güncellemesi'ne kadar desteklenmez ve 32 bit hiç desteklenmez.
8,
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.