Klasörlerdeki ve alt klasörlerdeki tüm dosyaları küçük harf olarak yeniden adlandırmanın bir yoluna ihtiyacım var.
Bunu sadece pencereleri kullanarak yapmanın bir yolu olup olmadığını bilmek istiyorum (XP veya 7)
Klasörlerdeki ve alt klasörlerdeki tüm dosyaları küçük harf olarak yeniden adlandırmanın bir yoluna ihtiyacım var.
Bunu sadece pencereleri kullanarak yapmanın bir yolu olup olmadığını bilmek istiyorum (XP veya 7)
Yanıtlar:
Dizine gidin ve aşağıdaki komutu çalıştırın:
for /f "Tokens=*" %f in ('dir /l/b/a-d') do (rename "%f" "%f")
Birisi değiştirmek / geliştirmek istemeniz durumunda ortaya çıkan detay:
for /f
- Her hat için"Tokens=*"
- Her öğeyi her satırda işleyin.%f in (...)
- %f
Her öğe için değişken adınızdır.dir
- bir dizindeki her dosyayı ve alt dizini listeler./l
- (dir parametresi) Küçük harf kullanır./b
- (dir için parametre) Çıplak format kullanır, yalnızca dosya / dizin adlarını, boyutsuz, başlıksız kullanır./a-d
- (dir parametre) Do not listelemek dizinleri . ( a
standları attribute
, -
standları not
ve d
standları directory
) .rename "%f" "%f"
- dosyayı, aslında dir
komut ve /l
birleşimin alt harfleri olan kendi adıyla yeniden adlandırın .for /f "Tokens=*" %f in ('dir /l/b/a-d/s') do (rename "%f" "%f")
(dir / r ekledi).
spacetornado Renamer , toplu olarak toplu dosyaları yeniden adlandıran bir Windows programıdır. Metin arayabilir ve değiştirebilir, belirli sayıda karakteri kaldırabilir, küçük, büyük veya İlk Harf Büyük harf olarak değiştirebilir ve her dosya adının başına veya sonuna metin ekleyebilir (ekleme / hazırlama)
Windows 7'den beri bu görevler için PowerShell'i kullanabilirsiniz.
Get-ChildItem "C:\path\to\folder" -recurse |
Where {-Not $_.PSIsContainer} |
Rename-Item -NewName {$_.FullName.ToLower()}
- Kök klasörünüzü seçin
- kök klasörün ve alt klasörlerin içindeki tüm dosyalar yeniden adlandırılır
- klasör adları ile dışlanır Where {-Not $_.PSIsContainer} |
İşte gerçekten işe yarayan sadece yerel cmd.exe komutlarını kullanarak uygun bir özyinelemeli komut satırı çözümü. Bunun mümkün olan en basit yerel çözüm olduğuna inanıyorum:
for /r %D in (.) do @for /f "eol=: delims=" %F in ('dir /l/b/a-d "%D"') do @ren "%D\%F" "%F"
Native cmd.exe komutlarının ötesine geçmeye istekli iseniz, başka bir seçenek de JREN.BAT normal ifade yeniden adlandırma yardımcı programı , adları büyük veya küçük harfe dönüştürme seçeneklerini destekleyen. Herhangi bir Windows makinesinde XP'den itibaren doğal olarak çalışan saf komut dosyasıdır (karma JScript / toplu iş) - 3. parti exe dosyaları gerekmez. Tüm belgelere yerleşik olarak - komut satırından jren /?
veya jren /??
disk belleği çıktısı almak istiyorsanız erişilir .
JREN ile özyinelemeli çözüm şu kadar basittir:
jren "^" "" /s /l
/a-d
anahtarı kaldırın ve aynı zamanda klasör adlarını da küçük harf olacaktır.
" D"') was unexpected at this time.
Doğrudan bir komut olarak çalıştırmak gayet iyi çalışıyor, sadece bir toplu iş dosyası olarak çalıştırıldığında çalışmaz. Bir toplu iş dosyası olarak nasıl çalışacağını bilmiyorum ama konuyu ele alacağımı düşündüm.
%D
değiştirmek gerekir %%D
ve %F
hiç %%F
bir toplu komut dosyası içinde komuta koyarsanız.
Benim kişisel favori toplu dosya yeniden adlandırma programı Cylog's WildRename . Diğer birçok özellik arasında, dosya ismini değiştirebilir. WildRename ile ilgili en iyi şey, muhtemelen normal ifadeleri desteklemesidir!
for /f "Tokens=*" %f in ('cmd /c "echo %cd%& dir /l/b/ad/s"') do (for /f "Tokens=*" %g in ('dir /l/b/a-d "%f"') do (rename "%f"\"%g" "%g"))
for /f "Tokens=*" %f in ('cmd /c "echo %cd%& dir /l/b/ad/s"')
Geçerli içindeki tüm dizinlerin mutlak yollarının bir listesini alır (dahil):
C: \ Foo>
C: \ Foo \ TO.txt
C: \ Foo \ Bar \ LOWER.txt
C: \ Foo \ Bar \ Baz \ CASE.txt
for /f "Tokens=*" %g in ('dir /l/b/a-d "%f"') do (rename "%f"\"%g" "%g")
İlk döngü tarafından bulunan mutlak yolların her birinin içindeki tüm dosya adlarının (veya anahtarı çıkarırsanız dosya ve dizin adlarının) bir listesini alır ve bu dosyaların adını küçük harfe dönüştürür./a-d
C: \ Foo \ TO.txt
C: \ Foo \ Bar \ LOWER.txt
C: \ Foo \ Bar \ Baz \ CASE.txt
* iki döngüye ihtiyaç duyar çünkü ikinci argüman rename
bir dosya adı olmalı ve mutlak bir yol değil ( /s
anahtar tarafından elde edilen ).
cmd /c "echo %cd%&
ilk sende var for
? Tamamen gereksiz.
echo %cd%
, geçerli klasörü mutlak yollar listesine eklemek için var ; ve cmd /c
yapar &
komutları birleştirmek için çalışmalara. Windows Toplu Komut Dosyası ile ilgili tam bir noob ; Daha iyi bir yol biliyorsanız, cevabı geliştirmek için çekinmeyin!
http://www.dostips.com/DtCodeCmdLib.php#Function.toLower , bir toplu iş dosyasından eklemeniz ve çağırmanız gereken basit bir işlev sunar.
Böylece toplu iş dosyası klasör / dosya adlarını tekrarlayın ve adın küçük harfini oluşturmak için bu işlevi çağırın.
Gönderen http://windowsitpro.com/articles/index.cfm?articleid=81612 :
Yalnızca standart komutları kullanarak LwrCase.bat ve LwrCase_Folder.bat komut dosyalarını, küçük harfli dosya adını, küçük harfli dosya ismini değiştirmek veya bir klasördeki tüm dosya isimlerini küçük harf olarak yeniden adlandırdım.
Bir dosya adını küçük harf olarak yeniden adlandırmak için şunu kullanın:
[call] LwrCase FullyQualifiedFileName
FullyQualifiedFileName, yeniden adlandırılacak tam dosya adıdır.
Bir dizindeki tüm dosya adlarını yeniden adlandırmak için şunu kullanın:
[call] LwrCase_Folder FullyQualifiedDirectoryName [/S]
FullyQualifiedDirectoryName, tam nitelikli klasör yoludur ve / S, tüm alt klasörlerdeki dosya adlarını da değiştirecek isteğe bağlı bir parametredir.
Not: LwrCase.bat, küçük harf adları döndüren DIR komutunun / L anahtarını kullanır.
LwrCase.bat içerir:
@echo off
if {%1}=={} @echo Syntax: LwrCase FullyQualifiedFileName&goto :EOF
if not exist %1 @echo LwrCase - %1 NOT found.&goto :EOF
setlocal
for /f "Tokens=*" %%a in ('@echo %~a1') do (
set file=%%a
)
if /i "%file:~0,1%" EQU "d" @echo LwrCase - %1 is NOT a file.&endlocal&goto :EOF
for /f "Tokens=*" %%f in ('dir %1 /L /b /a /a-d') do (
Rename %1 "%%f"
)
endlocal
LwrCase_Folder.bat şunları içerir:
@echo off
if {%1}=={} @echo Syntax: LwrCase_Folder FullyQualifiedDirectoryName&goto :EOF
if not exist %1 @echo LwrCase_Folder - %1 NOT found.&goto :EOF
setlocal
for /f "Tokens=*" %%a in ('@echo %~a1') do (
set folder=%%a
)
if /i "%folder:~0,1%" NEQ "d" @echo LwrCase_Folder - %1 is NOT a folder.&endlocal&goto :EOF
pushd %1
set sw=/B /A /A-D
if /i {%2}=={/S} set sw=%sw% %2
for /f "Tokens=*" %%f in ('dir %sw%') do (
call LwrCase "%%f"
)
popd
endlocal
Bunu Windows'ta yapmak için en iyi program Toplu Yeniden Adlandırma Yardımcı Programıdır . Bu bir mans aracıdır. Regex'i, dosyaları ve / veya klasörleri yeniden adlandırmak için bile kullanabilirsiniz. Aynı zamanda kabuk entegrasyonuna sahiptir (bu yüzden explorerdan sağ tıklamayla çalıştırabilirsiniz) çok güzel. 64 bit ve 32 bit sürümleri mevcuttur.
Bu soruya kabul edilen cevap , loftysnake tarafından geçerli dizin için çalışır ancak alt klasörlerde arama yapmaz.
Sawny , loftysnake'in cevabını
yinelemeli yapmak için cevabında basit bir değişiklik önerdi , ancak işe yaramadı çünkü rename
komut, dosya adı1 (kaynak) ile bir sürücü ve yol belirtmenize izin verirken , dosya adı2 (hedef) sadece bir dosya adı olmalıdır . Yardım ( /?
) mesajını alıntılamak için ,
… Hedef dosyanız için yeni bir sürücü veya yol belirtemezsiniz.
Ancak move
çalışmadığı yerlerde rename
, bu komutla tekrar tekrar küçük harfleri yeniden adlandırabilirsiniz:
for /f "Tokens=*" %f in ('dir /l/b/a-d/s') do (move /y "%f" "%f")
çünkü bunun Move
dizin yollarıyla baş edebileceği ortaya çıktı .
Yukarıdaki komut, doğrudan Komut İstemi'ne ( CMD.EXE
) yazıldığında çalışır . Bunu bir batch ( .BAT
) dosyasından yapmak istiyorsanız, %
karakterleri iki katına çıkarmanız gerekir :
for /f "Tokens=*" %%f in ('dir /l/b/a-d/s') do (move /y "%%f" "%%f")
Muhtemelen parantezleri kaldırabilir /y
ve sadece diyebilirsiniz do move …
.
move
işe yaramadığı yerlere işaret ediyordum rename
ve sanırım move
burada komutun kullanılmasını öneren tek kişi benim . Ben sadece @loftysnake ve @sawny ın önerilerini aldım ve umarım onları bir çiş geliştirdim.
move
, ama şimdi bulamıyorum.
Güç kalkanı
Dizine gidin ve çalıştırın:
dir | Rename-Item -NewName { $_.Name.ToLowerInvariant() }
Bunun işe yaradığını doğruladım. Burada bulundu: http://www.hanselman.com/blog/PennyPinchingVideoMovingMyWebsitesImagesToTheAzureCDNAndUsingACustomDomain.aspx