1. sayfa (Toplam 1 sayfa)

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

Gönderilme zamanı: 30 Eyl 2020, 12:26
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?

Re: bat dosyası ile ps1 dosyası yapmak

Gönderilme zamanı: 30 Eyl 2020, 20:40
gönderen velociraptor
Ben Vbs lerde tek tek ekliyorum . Varsa kolayı cidden bilmek isterim

Re: bat dosyası ile ps1 dosyası yapmak

Gönderilme zamanı: 01 Eki 2020, 06:18
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

Re: bat dosyası ile ps1 dosyası yapmak

Gönderilme zamanı: 02 Eki 2020, 11:10
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ı

Re: bat dosyası ile ps1 dosyası yapmak

Gönderilme zamanı: 02 Eki 2020, 14:52
gönderen velociraptor
Paylaşım için teşekkürler, özel karakterler çokça kullanılıyor malesef

Re: bat dosyası ile ps1 dosyası yapmak

Gönderilme zamanı: 02 Eki 2020, 17:29
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

Re: bat dosyası ile ps1 dosyası yapmak

Gönderilme zamanı: 03 Eki 2020, 00:11
gönderen velociraptor
İnşallah , hayırlısı diyelim

Re: bat dosyası ile ps1 dosyası yapmak

Gönderilme zamanı: 24 May 2021, 16:27
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 

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

Gönderilme zamanı: 24 May 2021, 16:56
gönderen velociraptor
İşe yarayabilir , sağolasın