Metindeki satırları yalnızca ilk 30 veya 50 karaktere kırpmak için Toplu Komut Dosyası


1

Şimdi senaryolarda yeniyim ama "for" komutunun anlaşılmasını gerçekten zor buluyorum (özellikle bu belirteçlerle ve sınırlayıcılarla vb.). Bunu söyleyerek, komut için yaptığım şeyi yapmak için kullanılabileceğini düşünüyorum. Olmazsa ve daha kolay bir yol varsa, cehaletimi görmezden gelin :(

Abc.txt bir metin dosyasında birden fazla satırım olduğunu ve her satırın "(quotes) 3 satırlı bir dosya ile başladığını söyleyin

"hey what is going on @mike220. I am working on your car. Its engine is in very bad condition" 
"Because if you knew, you'd get shredded and do it with certainty"
"@honey220 Do you know someone who has busted their ass on a diet only for results to come to a screeching halt after a few weeks"

Her satırı, tırnak içinde, Sabit uzunlukta 30 veya 50 veya 100 karakter (boşluklar dahil) olarak nasıl düzenleyebilirim? tırnak içindeki satırlar.

50 giriyorum diyelim, yukarıdaki örneğin sonuçları olmalı

"hey what is going on @mike220. I am working on you"
"Because if you knew, you'd get shredded and do it"
"@honey220 Do you know someone who has busted their"

Teşekkürler

PS komutunu kullanıyorsanız, lütfen komutu açıklayın.

EDIT: Verilen cevap işe yaramasına rağmen ingilizce olmayan metinlerle ilgili bir sorun var. Giriş dosyasında ingilizce olmayan metin için çıktı dosyasında bozuk metin alıyorum. Buradaki herhangi bir yardım @ barlop, ingilizce olmayan metindir (1 satır)

"फाइल है इसको ना पढ़े आपको कोई मतलांब नही"

1
Anlamak için uğraştığınızı açıklayarak başlıyorsunuz, forancak sonra karakterleri kırpmak için bir komut isteyin. Belki bize şu ana kadar ne olduğunu ve nerede kaldığını göster.
Paul,

30'dan sonra kiralama ile ne yapmak istersin? kaldır veya yeni bir satıra ekle?
Ould Abba

Peki neden ikiniz de değilsiniz, örneğin @Paul veya ould, karaktere göre belirten bir for döngüsü nasıl yapacağınızı söyleyin
barlop

@OuldAbba yeni bir satır ekle ?! Yeni bir satır eklemek hakkında hiçbir şey söylemedi! Döşeme dedi. ve kesilmiş çizgilerle bir dosya oluşturun. Biliyorsanız, cevabınızı görmek için sorgulayan ve okuyan herkes yararına olacaktır.
barlop

bu satır cmd / v'ye yardımcı olabilir: o zamanlar for /f %f in (a.txt) do @(set a=%f & echo !a:~0,3!)henüz orada olmasa da .. ama her satırın ilk 3 karakterini verir. Bu varyasyon bazı karakterleri for /f %f in (a.txt) do @(set a=%f & echo !a:~1,-2!)
siler

Yanıtlar:


3

Bu yapar

@echo off

setlocal enableextensions enabledelayedexpansion

set /p num=Enter chars to show between quotes: 
set /a num=%num%+1

for /f "delims=" %%f in (a.txt) do (
set a=%%f

echo !a:~0,%num%!^"
)

Bu nedenle, örneğinizi kullanarak, bu bir txt içindedir. Yani her satır bir alıntı ile başlar ve boşluklar olmasa da işe yaramasına rağmen boşluklar vardır.

"hey what is going on @mike220. I am working on your car. Its engine is in very bad condition" 
"Because if you knew, you'd get shredded and do it with certainty"
"@honey220 Do you know someone who has busted their ass on a diet only for results to come to a screeching halt after a few weeks"

Ve toplu komut dosyasını çalıştırma

C:\blah>a.bat
Enter chars to show between quotes: 3
"hey"
"Bec"
"@ho"

C:\blah>a.bat
Enter chars to show between quotes: 50
"hey what is going on @mike220. I am working on you"
"Because if you knew, you'd get shredded and do it "
"@honey220 Do you know someone who has busted their"

C:\blah>

Şimdi def.txt dosyasına dönüştürmek için iki satır ekledim.

@echo off


setlocal enableextensions enabledelayedexpansion

del def.txt 2>nul


set /p num=Enter chars to show between quotes: 
set /a num=%num%+1

for /f "delims=" %%f in (a.txt) do (
set a=%%f

echo !a:~0,%num%!^"
echo !a:~0,%num%!^" >>def.txt
)


C:\crp\dlsnex>a
Enter chars to show between quotes: 2
"he"
"Be"
"@h"

C:\crp\dlsnex>type def.txt
"he"
"Be"
"@h"

C:\crp\dlsnex>

forcmd cinsinden ifadeler biraz zor. Bunu anlamak için, bir dosyanın her satırını kesmeden yazdıran bir for ifadesi yazmaya başlayın ve abcdefg ve hijklmn gibi iki satırlı basit bir dosya kullanın. Sonra bu ifade için for /f %f in (a.txt) do @echo %fo zaman inşa. Ama başlayacağınız yer burası, nasıl yapılacağını bulmak için. Bunu yaptıktan sonra, "delims =" ifadesini ekleyin, ne gibi bir etkisinin olduğunu görün (efekti görmek için dosyanın satırlarında bazı boşluklara ihtiyacınız olabilir). Sonra toplu iş içinde bir alt halkayı nasıl bulacağınıza bakın. a = abcdefg echo% a: ~% 0,2 (ab basar).


plz plz plz barlop bana bunu açıklar .... / f "delims =" (a.txt) 'deki %% f yapın (a = %% f echo! a: ~ 0,% num%! ^ ".. ........ bunu 5. sınıf çocuğu öğrenme grubuna, her seferinde bir mektuba açıkladığınız gibi. Bunu "FOR komutundan (evet, programlama geçmişinden gelmiyorum) anlayamamaktan bıktım. .......... VE bir şey daha eksi def.txt dosyasında çıktıya ihtiyacım yok :)
SuperUserMan

Programlama veya komut dosyası yapmayı öğrenmek için işleri parçalara ayırıp basit şeyler toplamanız gerekir. Bu yüzden, düzgün bir şekilde anlamak için, en iyi yol, her satırın parçalarına ayrılmış bir açıklama yapmak için çok fazla değildir. Yani çok basit bir şeyi anlamaya çalışarak başlıyorsunuz. Bir dosyanın her satırını döken bir for ifadesi gibi (kırpma değil). Ve nasıl bir değişken verildiğine bakarsınız, örneğin a = abcdefg bunun bir kısmını nasıl çıktıracağınızı. Sadece ilk 3 karakter gibi.
barlop

tamam bir şey anladım. 1) Yani% f 1 satır yazdırıyor, neden bir = %% f kullandınız, yani fazladan "%"? 2) ne yapar! başlangıç ​​ve bitiş anlamında mı? ve ^ ve "--- --- a komutunda ne anlama geliyor: ~ 0,% num%! ^" 3) "delims =" ne anlama geliyor? Teşekkürler. Örnekteki 3 karakter için% a: ~ 0,3% doğru mu ihtiyacım var?
SuperUserMan

@SuperUserMan bunlardan bazıları toplu iş için benzersiz şeylerdir. Cmd'den bir şey denerseniz,% f kullanırsınız, toplu halde bir şey denerseniz, çalışmadığını görürsünüz ve%% f kullanmanız gerekir. grup, yığın, parça, bir defada alınan miktar. Herhangi bir basit satırla, komut satırından vs toplu iş dosyasından deneyebilirsiniz. Ve% a olabilir ya da (a.txt) içindeki% a için ne olursa olsun% a yankı yapar. Toplu işte %% a kullanın.
barlop

Ünlem işareti, programcılar için sürpriz olan toplu işlem hakkında tamamen saçma bir şey. Normalde,% değişkeni% 'si, yüzdelerle çevrili değişkeninizde yaparsınız. Ancak bazı durumlarda, içinde% var% 'ı kullanmak gibi çalışmaz forya ifda komik olabilir ve bu olduğunda A) bu çizgiye sahip olmalısınız setlocal enableextensions enabledelayedexpansionve B) kullanın! Var! yerine% var% Ve sadece cmd.exe'de bir şeyler çalıştırıyorsanız ve istediğiniz! var! çalışmak için yapmanız gereken cmd /v:ondaha sonra eko yapabilirsiniz! var!
barlop
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.