2016-04-07 40 views
0

aşağıdakiPowershell'de, dosyanın yeni kopyasını almak için dosya varsa, nasıl dosya kopyalayabilirim/yapıştırırım?

Kopya Item -Path c ile bir powershell komut dosyası çalıştırıyorum: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ CONFIG \ machine.config -Hedef c: \ Windows \ Microsoft. NET \ Framework \ v2.0.50727 \ CONFIG \ machine.orig

Eğer makine.orig zaten mevcutsa, onu machine.orig1'e kopyalayabilirim ve eğer varsa, machine.orgin2?

cevap

2

kullanarak bu tür dosyayı kopyalamak için aynı değiştirebilir. Şahsen, artan bir sayı yerine dosyadaki tarih/zaman damgası fikrini beğeniyorum. Bu şekilde, dosya yedeklendiğinde ve dosya üzerinde kafa karışıklığı yaratma olasılığınız çok düşüktür. Artı komut dosyası kodu daha basittir.

Bu yardımcı olur umarım.

$TimeStamp = get-date -f "MMddyyyyHHmmss" 
$SourceFile = Dir c:\folder\file.txt 
$DestinationFile = "{0}\{1}_{2}.{3}" -f $SourceFile.DirectoryName, $SourceFile.BaseName, $TimeStamp, $SourceFile.Extension 
copy-Item $sourcefile $DestinationFile 
+0

hmmm, bu kötü bir fikir olmayabilir, bunu deneyeceğim. Sadece artan sayılardan bahsetmiştim (ve artan sayıyı söylediğin için teşekkür ederim, kelimeyi düşünemedim) çünkü hızlıydı. Bunu deneyeceğim ve bilmeni istiyorum. –

+0

Çok teşekkür ederim Gene, tam da ihtiyacım olan şey bu ve gayet iyi çalışıyor. Bu benim için çözüldü. –

+0

Ayrıca ekleyeceğim, daha az hareketli parça olduğu için bu çözümle daha rahat hissediyorum, tekrar teşekkürler –

0
#let us first define the destination path 
$path = "R:\WorkindDirectory" 
#name of the file 
$file = "machine.orgin" 
#let us list the number of the files which are similar to the $file that you are trying to create 
$list = Get-ChildItem $path | select name | where name -match $file 
#let us count the number of files which match the name $file 
$a = ($list.name).count 
#if such count of the files matching $file is less than 0 (which means such file dont exist) 
if ($a -lt 1) 
{ 
New-Item -Path $path -ItemType file -Name machine.orgin 
} 
#if such count of the files matching $file is greater than 0 (which means such/similar file exists) 
if ($a -gt 0) 
{ 
$file = $file+$a 
New-Item -Path $path -ItemType file -Name $file 
} 

Not: Bu, dosyaların adlarının dizide olduğunu varsayarak çalışır. machine.orgin oluşturup bize bu komut dosyası kullanarak söylemek

machine.orgin1

machine.orgin2

machine.orgin3

edelim ve daha sonra machine.orgin2 silin ve daha sonra aynı komut dosyasını çalıştırmak yeniden işe yaramaz. İşte ben yeni bir dosya oluşturmak için çalıştık bir örnek verdik ve güvenle bir öneride bulunayım copy-item yerine new-item

+0

Teşekkürler Gajendra, bu harika bir bilgidir, şimdi sorun şu ki, bunu farklı yollarda 4 farklı dosyaya yapıyorum. Kopya öğesinin bunu yapmak için bir çeşit uzantıya sahip olduğunu düşünmekteydim, böylece zaten orada olan bir dosyanın üzerine yazılmayacak ve sonunda bir sayı ekleyecek. –