batch-file - 如何在目录中循环抛出文件名,然后提取它们的名称以获取 substirng 值
问题描述
因此,我正在遍历目录中的文件并想要获取文件名,当我得到文件名时,我想用 delim 将其分解,因为我将在第一个下划线之前获得名称的第一部分。许多示例将其用于 /f loo[ 与令牌/分隔符设置,但是当我运行此代码时,它表示 i 的回声为:!var!然后当我骑“”我得到系统找不到文件!var!
我猜我的语法不正确,甚至我的脚本方法也是如此。有什么建议么?
@ECHO OFF
for /r %%a in (*.pdf) do (
echo %%~nxa
set var=%%~nxa
for /F "tokens=1-2 delims=_" %%i in ("!var!") do (
echo %%i %%j
)
)
PAUSE
解决方案
可以很容易地找到这些文件,并且使用 PowerShell 使用正则表达式标识前两个部分。PowerShell 在所有受支持的 Microsoft Windows 平台上都可用。PowerShell Core 是 PowerShell 的较新版本,可以在 Linux、Mac 和 Windows 上运行。
Get-ChildItem -File -Recurse -Filter '*.pdf' |
ForEach-Object {
Write-Host $_.Name
if ($_.Name -match '^(.*)_(.*)_.*') {
Write-Host "$($Matches[1]) $($Matches[2])"
}
}
推荐阅读
- jenkins - jenkins 多分支管道作业的 webhook
- jquery - 如何对齐jstree网格列数据“右”或“左”?
- javascript - 从不同的存储库设置 PATH 参数
- reactjs - 函数作为 React 子级无效。如果您返回 Component 而不是
从渲染 - c# - 从 C# 中的对象列表中获取 JSON 文件
- storage - 使用 MPIO 时的 SCSI 3 持久保留
- python - 如何在 Python 中合并两条更接近的非直线(非平行)线?
- linux - 在不引导操作系统的 GUI 的情况下在 Linux 中制作 GUI
- shell - 如何对 uniq -c 返回的值进行算术运算?
- jsf - JSF SelectOneMenu 在没有转换器的情况下无法工作?