Powershell 用文件中的字符串参数替换文本文件名

Powershell 用文件中的字符串参数替换文本文件名,powershell,powershell-2.0,powershell-3.0,Powershell,Powershell 2.0,Powershell 3.0,windows 7文件夹中有近500个.txt文件。 它们都被命名为01.txt、02.txt等等。 业务部门希望根据文件中的标题文本重命名文件 例如: 如果文件中有“Houston”文本,则应另存为Houston.txt 如果文件中有“Boston”文本,则应另存为Boston.txt,其中1933年是报告的年份 一种方法是手动的…但我试过了,这需要很多努力。 是否有一种方法可以使用PowerShell 3.0或windows批处理来完成此操作。好的,下面是我收集的信息。。。 您将文本文件视为

windows 7文件夹中有近500个.txt文件。 它们都被命名为01.txt、02.txt等等。 业务部门希望根据文件中的标题文本重命名文件

例如:
如果文件中有“Houston”文本,则应另存为Houston.txt
如果文件中有“Boston”文本,则应另存为Boston.txt,其中1933年是报告的年份

一种方法是手动的…但我试过了,这需要很多努力。
是否有一种方法可以使用PowerShell 3.0或windows批处理来完成此操作。

好的,下面是我收集的信息。。。 您将文本文件视为CSV,因此,例如,您的01.txt可能包含以下数据:

Houston,Pants,Tacos
Chicken,Fire,Fun for everyone
Oranges,Pizza,Cows
您希望对目录中的每个文本文件执行
Get ChildItem
(对子目录执行
-Recurse
),并将其设置为变量:

$Files = Get-ChildItem "MyDirectory\*.txt" -Recurse
接下来,我将对文件执行
ForEach

ForEach($f in $Files){
根据文件名获取每个文件的内容,使用
-split
标志获取第一个逗号的所有内容,并仅选择第一行:

$a = (Get-Content $f.fullname) -split "," | select -first 1
我将设置一个新变量,从第一个变量获取数据,并在您的案例中附加一个文件扩展名“.txt”:

$b = $a + ".txt"
然后告诉它将文件从当前名称重命名为变量
$b
的值,并使用
}
关闭循环:

Rename-Item $f.FullName $b -Force
}
简单的豌豆,柠檬汁

根据以下注释,您的文本文件如下所示: 这意味着第二行的最后一个单词将始终是您想要的文件名,并且在单词末尾有一个句号。如果是这种情况,请更改:

$a = (Get-Content $f.fullname) -split "," | select -first 1
$b = $a + ".txt"
致:


这将把变量
$a
设置为文本文件的第二行(第一个换行符[输入字符]后的第一行)。在本例中,它是单词“Boston”和句点字符“.”,因此变量值现在是“Boston.”。然后,它将变量
$b
设置为
$a
的值,并附加字母“txt”作为文件扩展名,使文件名为“Boston.txt”。

这是某种图灵测试吗?你所说的“标题文本”是什么意思?你有没有尝试过的任何示例?这不是一个代码编写服务,而是一个帮助程序员和编程爱好者的社区。好的。这是我正在编写的代码。它没有保存新文件名:get childitem-path“H:\CDX\CD_Extracts\Codelab*.txt”ForEach($Files中的f){$a=(get Content$f.fullname)-split“,“| select-first 1$b=$a+”.txt”重命名项$f.fullname$b-Force}。我提前向这里的老守卫道歉,因为他们不需要看他已经做了什么就做出了响应。我知道这不是一个代码编写服务,但是
$Truth1=写主机“这很简单。”
$Truth2=写主机“我现在真的需要生活中的业力。”
$Truth1
$Truth2
谢谢Nate。它是一个平面文件,变量之间没有逗号分隔。“Houston”字符串出现在文本文件的第二行Hi-Nate,如果我错了请纠正我…你是说如果它是文本文件而不是csv,Powershell无法解析它并拔出“Hoston”字符串并重命名文件?一点也不。您说过“企业希望根据文件中的标题文本重命名文件。”CSV有标题,标题构成第一行的内容。文本文件已。。。嗯,文本。所以当你说“header”时,你有一个.txt文件,我假设你把一个.txt文件当作一个.csv文件。是的,它们被分隔成各自的特定行。橙色的狐狸跳过了那只200美元的猫。猫追赶狐狸,到达了波士顿市。在那里,狐狸和猫再次成为朋友并吃了早餐
$a = (Get-Content $f.fullname) -split "," | select -first 1
$b = $a + ".txt"
$a = (Get-Content $f.fullname) | select -first 1 -skip 1
$b = $a.Split()[-1] + "txt"