【发布时间】:2014-11-17 01:54:35
【问题描述】:
我有一个文本文件,其中包含一组 UNIX PATH 格式的字符串。我需要从每个由'/'分隔的字符串中提取最后一个字符串。
/Public/Home/Call/Reports/Weekly Template/C555 Weekly Report - Monday
/Public/Home/Call/Reports/Weekly Template/C567 Weekly Report - Monday
/Public/Home/Call/Reports/Weekly Template/C555 Weekly Report - Tuesday
/Public/Home/Claim Repo/Reports/Weekly Set/@Weekly Report - $100 for Monday
/Public/Home/Claim Report/Reports/Weekly Not Set/ Weekly Report - Monday
我需要在 Windows 机器上运行这些,因此需要在 PowerShell 或批处理上运行。 我需要帮助来编写允许空格和特殊字符的脚本,它可以读取 .TXT 文件并以以下格式输出完整的字符串:
/Public/Home/Call/Reports/Weekly Template C555 Weekly Report - Monday
/Public/Home/Call/Reports/Weekly Template C567 Weekly Report - Monday
/Public/Home/Call/Reports/Weekly Template C555 Weekly Report - Tuesday
/Public/Home/Claim Repo/Reports/Weekly Set @Weekly Report - $100 for Monday
/Public/Home/Claim Report/Reports/Weekly Not Set Weekly Report - Monday
我在另一个答案中找到了一个解决方案:
http://stackoverflow.com/questions/20004597/extracting-string-after-last-instance-of-delimiter-in-a-batch-file
代码如下:
for %%a in (%param:\= %) do set lastDir=%%a
:nextParam
set "param=%~1"
if not defined param goto endParams
for %%a in (%param:\= %) do set lastDir=%%a
echo Last dir: %lastDir%
shift
goto nextParam
:endParams
或者,以更简单的方式(没有空格限制):
:nextParam
if "%~1" equ "" goto endParams
echo Last dir: %~N1
shift
goto nextParam
:endParams
但是,我希望同时满足字符串中的空格和特殊字符,而上面没有做到这一点。
【问题讨论】:
标签: regex string powershell split delimiter