BAT script ile bir dosyadan belirli satırları çıktı almak

Programlama dilleri konusunda bilgi paylaşım alanıdır.
Cevapla
Kullanıcı avatarı
feuer
Megabyte3
Megabyte3
Mesajlar: 1404
Kayıt: 24 Eyl 2020, 01:33

BAT script ile bir dosyadan belirli satırları çıktı almak

Mesaj gönderen feuer »

umarım doğru başlıkta soruyorumdur

54 satırlık bir powershell scriptim var örnek.ps1

bunu bat dosyası içinden çalıştırıyorum şu şekilde

PowerShell.exe -Command "c:\cat\örnek.ps1"

ancak şöyle birşey düşündüm

bu ps1 dosyası diskte olmasa
bu 54 satırı bat dosyası içinden,
1 - çalıştırdığımda oluşturacak ,
2 - çalıştıracak,
3 - daha sonrada silecek şekilde nasıl hazırlayabilirim

2. ve 3. şık ile sorunum yok

1. şık için

echo "codeline1" > örnek.ps1
echo "codeline2" > örnek.ps1
echo "codeline3" > örnek.ps1
.
.
.
echo "codeline54" > örnek.ps1

şeklinde 54 satıra tek tek eklemeden, scriptin başladığı yerden bittiği yere kadar alacak bir komut ile yapabilir miyim?
bilginiz var mı bu konuda?
En son feuer tarafından 24 May 2021, 16:28 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Yaşamda en gerçek yol gösterici bilimdir.
Kullanıcı avatarı
velociraptor
Yottabyte4
Yottabyte4
Mesajlar: 33446
Kayıt: 14 Mar 2006, 02:33
cinsiyet: Erkek

Re: bat dosyası ile ps1 dosyası yapmak

Mesaj gönderen velociraptor »

Ben Vbs lerde tek tek ekliyorum . Varsa kolayı cidden bilmek isterim
Knowledge determines destiny, And ye shall know the Truth and the Truth shall make you free
Kullanıcı avatarı
feuer
Megabyte3
Megabyte3
Mesajlar: 1404
Kayıt: 24 Eyl 2020, 01:33

Re: bat dosyası ile ps1 dosyası yapmak

Mesaj gönderen feuer »

araştırıyorum
bulabildiklerim bunlar, daha doğrusu anladığım kısımlar

Kod: Tümünü seç

more /e +3 input.txt > output.txt
bu 3 yazan yere verdiğin rakam ile dosyanın içinde oraya kadar olan bölümü es geçiyor (skip) yani 4üncü satırdan başlatıyor output.txt yi

Kod: Tümünü seç

(
echo Line1
echo Line2
...
echo Last Line
) > output.txt 
bu da her satıra echo giriyoruz ancak output.txt scriptin en sonuna bir kere yazıyoruz
bunları zaten biliyorsundur, more komutunun böyle kullanılacağı aklıma gelmezdi araştırmasam

hazır bat dosyası buldum bir tane de, komut şeklinde giriyorsun başlangıç ve bitiş satırını çıktı veriyor ona bakıcam bugün boş olduğumda
Yaşamda en gerçek yol gösterici bilimdir.
Kullanıcı avatarı
feuer
Megabyte3
Megabyte3
Mesajlar: 1404
Kayıt: 24 Eyl 2020, 01:33

Re: bat dosyası ile ps1 dosyası yapmak

Mesaj gönderen feuer »

https://stackoverflow.com/questions/135 ... batch-file

çokça gezdim bu konu ile ilgili en anlaşılabilir ve uygulanabilir bu sayfayı buldum

Kod: Tümünü seç

@Echo OFF
del /q output.txt
Set "File=input.txt"
Set /A "Start_Line=3"
Set /A "End_Line=7"

For /F "Tokens=*" %%# In ('Type "%FILE%"') DO (
    Call Set /A "Line+=1"
    CMD /C "IF %%LINE%% GEQ %Start_Line% IF %%LINE%% LEQ %END_Line% (Echo %%#>>"Output.txt")"
)
bu script ile 3. ve 7. satırlar arasını alabiliyoruz ancak
boş satırlar atlanıyor ve bir sonraki satır çıktıya dahil ediyor
özel karakterler ile sorunluyuz
yani basit sayılar ve isimler olan satırları alıyor bu script ancak >< gibi özel karakterlerde sıkıntılı
Yaşamda en gerçek yol gösterici bilimdir.
Kullanıcı avatarı
velociraptor
Yottabyte4
Yottabyte4
Mesajlar: 33446
Kayıt: 14 Mar 2006, 02:33
cinsiyet: Erkek

Re: bat dosyası ile ps1 dosyası yapmak

Mesaj gönderen velociraptor »

Paylaşım için teşekkürler, özel karakterler çokça kullanılıyor malesef
Knowledge determines destiny, And ye shall know the Truth and the Truth shall make you free
Kullanıcı avatarı
feuer
Megabyte3
Megabyte3
Mesajlar: 1404
Kayıt: 24 Eyl 2020, 01:33

Re: bat dosyası ile ps1 dosyası yapmak

Mesaj gönderen feuer »

olayın mantığını anladım,
ayrıntıları anlamaya çalışıyorum

birkaç değişiklik ile özel karakter sorununu çözülüyor sanırım
vaktim oldukça bu konu ile ilgilenicem
özel karakter ve boş satır sorununu da çözünce paylaşırım
Yaşamda en gerçek yol gösterici bilimdir.
Kullanıcı avatarı
velociraptor
Yottabyte4
Yottabyte4
Mesajlar: 33446
Kayıt: 14 Mar 2006, 02:33
cinsiyet: Erkek

Re: bat dosyası ile ps1 dosyası yapmak

Mesaj gönderen velociraptor »

İnşallah , hayırlısı diyelim
Knowledge determines destiny, And ye shall know the Truth and the Truth shall make you free
Kullanıcı avatarı
feuer
Megabyte3
Megabyte3
Mesajlar: 1404
Kayıt: 24 Eyl 2020, 01:33

Re: bat dosyası ile ps1 dosyası yapmak

Mesaj gönderen feuer »

Arkadaşlar bu kodlar bana ait değil stackoverflow.com da benzer konular ilgili bulduklarım ve tenforumsta açtığım başlıktan gelenler ile derlediğim örnekler, işine yarayan olabilir.

Bir dosya içerisinden belli satırları almak için kullanabilirsiniz.

1. script özel karakterlerde hata veriyor. 2. script satır değerlerini "" arasında veriyor. 3. script özel karakter içeren satırlarıda sorunsuz alıyor.

Get_Specific_Lines_from_a_File_A.bat

Kod: Tümünü seç

@Echo OFF
del /q outputA.txt
Set "File=input.txt"
Set /A "Start_Line=3"
Set /A "End_Line=7"

For /F "Tokens=*" %%# In ('Type "%FILE%"') DO (
    Call Set /A "Line+=1"
    CMD /C "IF %%LINE%% GEQ %Start_Line% IF %%LINE%% LEQ %END_Line% (Echo %%#>>"outputA.txt")"
)

Get_Specific_Lines_from_a_File_B.bat

Kod: Tümünü seç

@Echo OFF
del /q outputB.txt

Set    "File=input.txt"
Set /A "Start_Line=3"
Set /A "End_Line=7"

For /F "Tokens=* delims=" %%# In ('Type "%FILE%"') DO (
    Set /A "Line+=1"
    CALL :READ_LINES "%%#"
)

:READ_LINES
(IF %LINE% GEQ %Start_Line% IF %LINE% LEQ %END_Line% (Echo %*>>"outputB.txt") ELSE (GOTO:END)) & GOTO:EOF

:END
Exit
Get_Specific_Lines_from_a_File_C.bat

Kod: Tümünü seç

@echo off


set file_to_read=input.txt
set /a start_line=3
set /a end_line=7
set outfile=outputC.txt
set counter=1

del /q %outfile%

break > %outfile%
setlocal ENABLEDELAYEDEXPANSION


for /f "delims=*" %%A  in (%file_to_read%) do (
    if !counter! GEQ !start_line! (
        echo %%A
        echo %%A >> !outfile!
    )
    set /A counter=!counter!katılıyorum

    if !counter! GEQ !end_line! (
        goto :endLoop
    )
)

:endLoop
input.txt

Kod: Tümünü seç

one
two
three
<four
five
six
seven
eight
nine
ten
outputA.txt

Kod: Tümünü seç

three
five
six
seven
outputB.txt

Kod: Tümünü seç

"three"
"<four"
"five"
"six"
"seven"
outputC.txt

Kod: Tümünü seç

three 
<four 
five 
six 
Yaşamda en gerçek yol gösterici bilimdir.
Kullanıcı avatarı
velociraptor
Yottabyte4
Yottabyte4
Mesajlar: 33446
Kayıt: 14 Mar 2006, 02:33
cinsiyet: Erkek

Re: BAT script ile bir dosyadan belirli satırları çıktı almak

Mesaj gönderen velociraptor »

İşe yarayabilir , sağolasın
Knowledge determines destiny, And ye shall know the Truth and the Truth shall make you free
Cevapla