2014-11-08 252 views
0

我是一個沒有任何編程知識的真正的新手:-) 我的任務是我無法解決的是,我有一個文件夾中的很多圖片,我需要重命名它們。我有一個Excel表格,其中包含新舊文件名。舊的和新的文件名沒有任何線索。 如何使用PowerShell腳本來做到這一點? 在此先感謝!批處理文件圖像重命名

+0

到目前爲止你有沒有嘗試過任何東西? SO主要關注與特定編碼問題有關的問題 – Bowdzone 2014-11-08 22:16:43

回答

0

一如既往,一些有代表性的樣本數據將是有用的。

這裏有一個基本的批處理文件(標準批次,不開機等等)使用notepad或一個真正的文本編輯器

@echo off 
setlocal 
pushd "?:\directory\where\your\pictures\are\stored 
for /f "usebackqtokens=1,2delims=," %%a in ("?:\some\directoryname\file.csv") do ECHO(ren "%%~a" "%%~b" 
popd 

複製 - 粘貼 - 不WORD - 到一個文件名爲whateveryoulike蝙蝠,你不能像renrename(他們是保留字)。

創建一個名爲「?:\一些\目錄名\ FILE.CSV」從excel(導出爲CSV格式)使用逗號作爲分隔符,然後通過簡單地在提示符下輸入whateveryoulike運行該批處理文件。

因爲我發佈了它,所以ren命令將文件重命名爲將被髮送到控制檯。如果這些顯示正確,請將ECHO(ren更改爲ren以重命名而不是報告(安全措施以避免損壞)

請注意,此處的PUSHD命令將更改爲目標目錄。您可以省略這一行,它是伴侶popd,然後生成的批處理將在「當前目錄」中執行。

這一切都假定您的數據形式

oldname.jpg newname.jpg 

,但你有沒有向我們證明。如果不是,則該方案將需要調整。

+0

感謝您的快速回答!我已經盡力了,正如你所解釋的,但結果是下面的錯誤信息。你能幫我進一步嗎?謝謝! PS H:\képek\ teszt> @echo off setlocal pushd「?:\képek\ teszt for/f」usebackqtokens = 1,2delims =,「%% a in(」?\képek\ teszt \ nevek.csv 「)ECHO(ren」%%〜a「」%%〜b「 popd splatting操作符'@'不能用於引用表達式中的變量。'@ec ho'只能用作命令的參數。要使用'$ echo'引用expressi 中的變量。 在線:1字符:1 – 2014-11-08 23:18:48

+0

字符串開始: 在行:4 char:96 + for/f「usebackqtokens = 1,2delims =,」%% a in(「?\képek\ teszt \ nevek.csv 「)ECHO(ren」% %〜a「」%%〜b <<<<「 缺少終止符:」。 行:5 char:5 – 2014-11-08 23:22:06

+0

這是一個批處理程序,它需要運行在命令提示符下,與powershell無關 – Magoo 2014-11-08 23:36:29

0

用Powershell做到這一點。你會首先要確保您的CSV文件格式,如:

OldFile,NewFile 
sample1.jpg,newname1.jpg 
sample2.jpg,newname2.jpg 
sample3.jpg,newname3.jpg 

*請注意,必須放在標題行

然後你可以輸入這兩條線,並完成一個PowerShell提示符是很重要的:

$filesToRename = Import-CSV C:\sample\rename.csv 
foreach ($file In $filesToRename) {Rename-Item $file.OldFile $file.NewFile} 

*注意:如果在CSV文件的文件名不包括完整的文件路徑(如果它們只是文件名)然後確保你改變你的工作目錄中的文件在哪裏。

+0

謝謝!這個問題已經出售了,但這種方式對我來說非常有用,因爲我剛剛決定照顧一下這個PowerShell的東西。你有什麼建議我應該從哪裏開始學習? – 2014-11-09 15:12:08

+0

我可能會推薦搜索Hey腳本專家並閱讀該博客,這是由Microsoft腳本專家。只需使用cmdlet,測試一下並瞭解它們的工作方式,不要忘記使用Get-Help,快樂的腳本。 – 2014-11-10 02:47:55