Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 从windows cmd中的txt文件中删除文件夹_Powershell_Batch File_Text_Replace_Cmd - Fatal编程技术网

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/