Powershell 从windows cmd中的txt文件中删除文件夹
我有上千行这样的文件Powershell 从windows cmd中的txt文件中删除文件夹,powershell,batch-file,text,replace,cmd,Powershell,Batch File,Text,Replace,Cmd,我有上千行这样的文件 x:/folder/folder/PN.xxx y:/folder/PN.xxx ... 我需要为更改此设置制作脚本(用于excel): 对我来说,最好的结果是: x;PN;x:/folder/folder/ y;PN;y:/folder/ 我尝试在cmd中使用最简单的方法: D:\>powershell -Command "(gc serverPN.txt) -replace 'xxx', ';' | Out-File myFile.txt" 但我不知道,
x:/folder/folder/PN.xxx
y:/folder/PN.xxx
...
我需要为更改此设置制作脚本(用于excel):
对我来说,最好的结果是:
x;PN;x:/folder/folder/
y;PN;y:/folder/
我尝试在cmd中使用最简单的方法:
D:\>powershell -Command "(gc serverPN.txt) -replace 'xxx', ';' | Out-File myFile.txt"
但我不知道,当我想删除/*/之间的所有内容时,需要在XXX中写些什么。类似这样的内容可能很接近:“\\[\D]*\\'
”
谢谢你的帮助 在PowerShell中尝试:
gc "serverPN.txt" | % {
get-item $_ | %{
"$($_.PSDrive);$($_.Name);$($_.Directory)" | Out-File "myFile.txt" -Append
}
}
在PowerShell中,请尝试:
gc "serverPN.txt" | % {
get-item $_ | %{
"$($_.PSDrive);$($_.Name);$($_.Directory)" | Out-File "myFile.txt" -Append
}
}
假设这些行存储在
text\u file.txt
中,对于解决方案,您需要一个for/F
循环和~
用于循环变量扩展的修饰符(有关详细信息,请参见获取/?
):
这将导致与您问题中的样本数据相关的以下输出:
如果要在输出中使用纯文件名而不带扩展名,请将
%%nxL
替换为%%nL假设行存储在text\u file.txt
中,对于解决方案,您需要使用for/F
循环和
循环变量扩展修饰符(有关详细信息,请参见for/?
):
这将导致与您问题中的样本数据相关的以下输出:
如果希望输出中的纯文件名不带扩展名,请将%%~nxL
替换为%%~nL这应该是您请求的正则表达式::.*/
,您可以将其替换为代码>:
powershell -Command "(gc serverPN.txt) -replace ':.*/', ';' | Out-File myFile.txt"
这应该是您请求的正则表达式::.*/
,您可以用替换它代码>:
powershell -Command "(gc serverPN.txt) -replace ':.*/', ';' | Out-File myFile.txt"
输出:
C:;testfile.xls
输出:
C:;testfile.xls
虽然它不是受人喜爱的PowerShell,但cmd也可以产生“最佳结果”
虽然它不是受人喜爱的PowerShell,但cmd也可以产生“最佳结果”
因此,您需要驱动器号;文件扩展名_name.extension
,而不考虑两者之间的路径?是的,我需要删除路径。最好的方法是:驱动字母;文件扩展名;那么你想要什么:x;文件.xxx
或x;PN;x:/folder/folder/
或x;PN.xxx;x:/folder/folder/
?file
代表什么(它不出现在原始行中)?对不起,file.xxx和Pn.xxx是相同的。x;file.xxx会很好,但是x;PN;x:/folder/folder/对于excel中的下一项工作会更好。因此,您需要驱动器号;文件扩展名_name.extension
,而不考虑两者之间的路径?是的,我需要删除路径。最好的方法是:驱动字母;文件扩展名;那么你想要什么:x;文件.xxx
或x;PN;x:/folder/folder/
或x;PN.xxx;x:/folder/folder/
?file
代表什么(它不出现在原始行中)?对不起,file.xxx和Pn.xxx是相同的。x;file.xxx会很好,但是x;PN;x:/folder/folder/将更好地用于excel中的下一项工作。我真的很喜欢您检索项目并处理对象的想法。唯一的缺点是,您需要能够检索所有文件,就像您检索项目和处理对象的想法一样。唯一的缺点是,您需要能够检索所有这些文件
C:;testfile.xls
C:>TYPE fi2.bat
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
FOR /F "usebackq tokens=*" %%f IN (`TYPE fi2.txt`) DO (
SET DRIVE=%%~df
SET DRIVE=!DRIVE:~0,1!
SET FILENAME=%%~nf
SET DIRNAME=%%~pf
SET DIRNAME=!DIRNAME:\=/!
ECHO !DRIVE!;!FILENAME!;%%~df!DIRNAME!
)
EXIT /B 0
C:>CALL fi2.bat
x;PN;x:/folder/folder/
y;PN;y:/folder/