Toplu Klasör Powershell Komut Dosyasını Yeniden Adlandırma


1

Aşağıdaki komut, Toplu Klasör Yeniden Adlandırma için kullanılır.

Ancak bunu Genel Komut Dosyası olarak yapmak istedim, böylece kullanıcılar girdi verebilir ve buna göre kullanabilir.

  1. Bu betiğin 3 girişi var
    • a) Kaynak Klasör yolunu girin
    • b) Dosyaların ve
    • c) Yeniden adlandırılacak yeni dosya adı

C) Yeniden adlandırılacak Yeni Dosya Adı hariç hepsi iyi.

$Rename = input

$newName = '$Rename_{0:d6}{1}' -f  $i , $extension  # $rename input cannot be used here # 

Yukarıdaki satırda yanlış bir şey olduğunu düşünüyorum, bunu yapmanın bir yolu var mı?

Write-Host "Renaming Bulk Files" -BackgroundColor Green -ForegroundColor White
$Source = Read-Host "Enter the Source Path Of the Folder, Ex: D:\Test"
$SourceExtension = Read-Host "Enter the Destination File Extension, Ex: *.pdf or *.jpg"
$Rename = Read-Host "Enter the File Name to be renamed"

$i = 0 
Get-ChildItem -Path $Source -Filter $SourceExtension | 
ForEach-Object {
    $extension = $_.Extension
    $newName = '$Rename_{0:d6}{1}' -f  $i , $extension 
    $i++ 
    Rename-Item -Path $_.FullName -NewName $newName 
}

Yanıtlar:


1
$newName = '$Rename_{0:d6}{1}' -f  $i , $extension  # $rename input cannot be used here

Neden olmasın? Bu kesinlikle işe yarıyor:

$newName = '{0}_{1:d6}{2}' -f  $Rename, $i, $_.Extension 

0

İlk olarak, değişken genişletmenin çalışması için tek tırnak yerine çift tırnak kullanmanız gerekir:

"$Rename_{0:d6}{1}" -f  $i , $extension 

Ancak hala bir sorun var. PowerShell, bahsettiğiniz değişkenin $Rename_. Niye ya? Çünkü alt çizgi değişken isimlerinde geçerli bir karakterdir. Bunu yapmanız gerekiyor:

"$($Rename)_{0:d6}{1}" -f  $i , $extension 

(Veya beatcracker'ın çözümünü kullanın.)


Bir dizgede geçerli karakterlerle çevrili olduğunda değişken adını belirtmenin başka bir yolu: "${Rename}_{0:d6}{1}". Bu şekilde değişkenleri dosyada bile saklayabilirsiniz: ${C:\Rename.var} = 'MyString'.
beatcracker

@beatcracker, Yuvarlak parantezleri severim çünkü bunlara isteğe bağlı ifadeler koyabilirsiniz: "$(1 + 1)". Kıvrımlı parantez kullanarak dosyada bir şeyler saklayabileceğinizi bilmiyordum. Kullanacağımı düşünüyorum Set-Content yerine: 'my string' | Set-Content blah.txt
dangph
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.