Tam Bir Yoldaki Karakter Sayısı?


0

Tam yoldaki karakter sayısını Windows'taki bir dosyaya saymam gerekiyor. Şu anda bu görevi nasıl yapıyorum:

  1. Bir komut istemi açın
  2. Söz konusu dizine cd (örneğin c: \ CruiseControl \ ProjectArtifacts \ ProjectName)
  3. aşağıdaki komutu yazın dir / s / b & gt; output.csv
  4. Ortaya çıkan output.csv dosyasını excel'de açın.
  5. kullan = LEN () excel işlevinde, output.csv dosyasında listelenen satır başına karakter sayısını sayma.

Explorer gezgini uzantısını veya bu işlevi önceden oluşturabilen üçüncü parti bir aracı, excel çıktısını dir. Bunu yapmanın daha kolay bir yolu var mı? Karşılaştığım sorunun kaynağı, Windows'ta ~ 260 karakterlik dosya yolu sınırı. Hangi yolun yaklaşık ~ 260 karakter olduğunu analiz etmeye çalışıyorum, böylece bu hatayı almaktan kaçınmak için onları kısaltabilirim.

Yanıtlar:


1

Bu tür şeylerle yapmak çok kolaydır Hamilton C kabuğu . Bu bir kerelik bir şey olursa, ücretsiz sürüm . İşte birkaç dosyanın tam yolunu üreten örnekte c:\Windows dizin, sonra dize uzunluklarını hesaplamak. Tam açıklama: Ben yazarım.

128 C% cd
c:\Windows
129 C% ls mi*
Microsoft.NET      Minidump           mib.bin
130 C% foreach i ( mi* )
131 C? @ f = fullpath ( i )
132 C? echo $i $f $strlen(f)
133 C? end
mib.bin c:\Windows\mib.bin 18
Microsoft.NET c:\Windows\Microsoft.NET 24
Minidump c:\Windows\Minidump 19
134 C%

Nicole - Çok etkileyici btw! Bu tam ihtiyacım olan şeydi. Bir sonraki çekim geldiğinde tam bir kopya satın almak için takvimime bir hatırlatıcı ekleyeceğim.
Richie086

Bilginize devam ettim ve Hamilton C Shell'i satın aldım. İnsanların bu harika ürünü bilmelerini sağlayacağımdan emin olacağım!
Richie086

Nicole - alt dizinlere nasıl girebilirim ve ayrıca her bir dizindeki dosyaların toplam yol uzunluğunu nasıl listeleyebilirim? Örnekte, dizinlerdeki karakter sayısını listelemek için iyi çalışır, ancak her bir dizindeki dosyaları değil.
Richie086

Çevrimdışı olarak tartışıldığı gibi, bir dizinin tamamını yeniden taramanın çok kolay bir yolu ... joker karakter, ör. foreach i (...\*) echo $i; end. ... construct "0 veya daha fazla dizin seviyesi, modelin kalanını eşleştirmek için ne gerekiyorsa yapılır" anlamına gelir.
Nicole Hamilton

1

Belki bu basit toplu iş dosyaları işe yarayabilir.

1) Geçerli dizindeki karakter sayısının sayılması:

@echo off
echo %cd%>"%TMP%\Temp.txt"
for %%l in ("%TMP%\Temp.txt") do set /a len=%%~zl
del "%TMP%\Temp.txt"
set /a len-=2
echo Path length = %len% chars.

cd dir. ve sadece toplu iş dosyasını arayın.

2) Belirtilen dizindeki karakter sayısının sayılması:

@echo off
echo %1>"%TMP%\Temp.txt"
for %%l in ("%TMP%\Temp.txt") do set /a len=%%~zl
del "%TMP%\Temp.txt"
set /a len-=4
echo Path length = %len% chars.

Toplu iş dosyasını çağırın ve tam yolu bir argüman olarak iletin (yol boşluk içeriyorsa tırnak işaretleri kullandığınızdan emin olun). Hata kontrolü yapılmayacağına dikkat edin, bu nedenle yol boşluk içerdiğinde tırnak bırakma işlemi hatalı (düşük) bir sayı verir ve sonunda fazladan ters eğik çizgi eklemek sayımı artırabilir.


0

Bu, sorunuza bir cevap değil, ancak sorununuzu giderir. tip

dir /s /b | findstr -r ...............................................................................................................................................................................................................................................................

Yukarıdaki resmime göre 255 dönem yazdım; bu yapacağım dir /s /bZaten bildiğiniz ve yalnızca en az 255 karakter uzunluğunda olan satırları (dosya yol adları) gösterin. İstediğiniz kadar periyot sayısını ayarlayın. Doğal olarak, yukarıdakilerin çıktısını yazdırmak veya başka analizler için bir dosyaya yönlendirebilirsiniz.

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.