假设我有一个我想要更改的潜在目录名列表。没有具体的规则,只需要从旧的名单中切换即可。到"一个新的名单和#34;
例如,我想要: - 目录" A" (如果存在)要重命名为" LEA" - 目录" ON" (如果存在)要重命名为" ONS" - 等等......,这是一个包含约100个潜在名字的列表。
(其他目录和文件当然未触及)。
我想让它成批,因为这必须在很多不同的计算机上完成。
您认为最好的方法是什么?使用Windows batch / powershell很好。如果需要,可以考虑在外部.txt文件中使用名称列表。
答案 0 :(得分:1)
一个简单的批处理脚本就可以了:
for /f "tokens=1,2 delims=/" %%i in (input.txt) do move "%%i" "%%j"
或者如果您关心缺少目录错误消息
for /f "tokens=1,2 delims=/" %%i in (input.txt) do if exist "%%i" (move "%%i" "%%j")
双%%
用于在批处理脚本中转义。如果您只是在命令行中输入此内容,则只需%
Input.txt应包含类似
的内容A/LEA
ON/ONS
在" delims=/
"中使用/(例如)作为分隔符让你在目录名称中有空格。如果您没有空格,可以将其保留,空格和制表符作为默认分隔符。
答案 1 :(得分:0)
使用名为
的csv文件此csv文件的内容:
oldnamedir;newnamedir
data;newdata
data2;newdata2
执行PowerShell脚本:
$mycsv=import-csv -Delimiter ";" -Path "c:\temp\myfilewithreplace.csv"
$startdir="C:\dir_where_you_want_rename_dirs"
foreach ($row in $mycsv)
{
$listdirtorename= gci -Path $startdir -Directory -Recurse | where { ($_.FullName -split "\\" | select -last 1) -eq ($row.oldnamedir) } | select Name, FullName, @{N="LenghtName";E={($_.FullName -split "\\").Count}} | sort LenghtName -Descending
foreach ($dir in $listdirtorename)
{
rename-item -Path $dir.FullName -NewName $row.newnamedir -Force
}
}