2016-04-20 7 views
0

Я хотел бы переименовать имена файлов в папке поэтапно, префикс строки. Я нашел этот сценарий Windows PowerShell, который только префиксы строки:Поименное имя имени файла

cd C:\Users\strz\Desktop\Data_zMob\processed_\PROD_3Euro_OK\Z_586_20160307_0850 
$files=get-childitem 
foreach ($file in $files) { 
Rename-Item $file.name ("stringToAppend" + $file.name) 
} 

Я не знаком с этим языком сценариев на всех. Поэтому я пробовал это:

cd C:\Users\strz\Desktop\Data_zMob\processed_\PROD_3Euro_OK\Z_586_20160307_0850 
    $files=get-childitem 
    $lotId=1 
    foreach ($file in $files) { 
    Rename-Item $file.name ($lotId + $file.name) 
    $lotId++ 
    } 

Это не удалось, конечно. Как я могу это достичь?

+1

Включите эту ошибку или сообщите, как она сработала. –

ответ

2
Cannot convert value "data.csv" to type "System.Int32". Error: "Input string was not in a correct format." 
At line:5 char:1 
+ Rename-Item $file.name ($lotId + $file.name) 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : InvalidArgument: (:) [], RuntimeException 
    + FullyQualifiedErrorId : InvalidCastFromStringToInteger

ли ошибка вы, скорее всего, получение из-за этой линии

Rename-Item $file.name ($lotId + $file.name) 

$lotid является целым числом, и вы пытаетесь выполнить математическую операцию со строкой, которая не является возможным, где имена файлов соревнуются. Простейшая вещь, чтобы сделать эту работу, поместите переменную в кавычки так, чтобы она обрабатывалась только как строка во время переименования.

Rename-Item $file.name ("$lotId" + $file.name) 

Поскольку вы знаете, путь, который вы работаете, я бы уклоняться от полагаться на текущий путь, являющегося рабочим путь. Что-то вроде этого также будет делать то, что вы хотите. Удалите -WhatIf, когда вы закончите свое тестирование.

$lotId = 1 
$path = "D:\Temp\New folder" 
Get-ChildItem $path | Foreach-object{ 
    Rename-Item -Path $_.FullName -NewName ("{0}{1}" -f $lotId++,$_.Name) -WhatIf 
} 

Мы обновляем $lotId++ во время каждого прохода петли таким образом, нет никакой необходимости в отдельной строке, чтобы увеличить это. Есть и другие фрагменты, которые будут работать наверняка. Это первый, что я сделал, что не делал ничего сумасшедшего.