- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在使用批处理文件(开放使用 VBS 和 PS1 文件)运行 Windows 10 专业版,并且我有一个由软件自动导出的文本文件,如下所示:
Sub_Group691_FE7IP11_2017-12-12.sldasm_bin/parts/Loft-Project.sldasm_bin/parts/Loft-Project...
Sub_Group691_FE7IP12_2017-12-12.sldasm_bin/parts/Loft-Project.sldasm_bin/parts/Loft-Project...
Sub_Group691_FE7IP13_2017-12-12.sldasm_bin/parts/Loft-Project.sldasm_bin/parts/Loft-Project...
每一行在“...”之后继续指定子部分,并且可能包含“毒”字符。 Sub_Group 部分是从文件名中提取的,也可以包含“毒”字符。
我想要做的是仅导出每行开头的文件名,直到并包括第一个文件扩展名,在本例中为“.sldasm”。 .sldasm 第一个实例右边的所有内容都应该被修剪。
到目前为止,我通过研究 Stackoverflow 拼凑的是:
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET "inputfile=C:\Scratch\ASMExport.txt"
SET "outputfile=C:\Scratch\InputFiles.txt"
(
FOR /f "usebackqdelims=" %%a IN ("%inputfile%") DO (
SET "currentline=%%a"
ECHO("!currentline:.sldasm=.sldasm & rem "!"
)
)>"%outputfile%"
GOTO :EOF
我的问题在于“rem”行,它似乎没有按预期工作,因为它在 FOR 循环中或因为需要启用延迟扩展。它似乎将“& rem”解析为文本,这看起来是因为延迟扩展的工作方式。我从上面几行得到的是:
SubGroup691_FE7IP11_2017-12-12.sldasm" & rem "/bin/parts/Loft-Project.sldasm" & rem ""
SubGroup691_FE7IP12_2017-12-12.sldasm" & rem "/bin/parts/Loft-Project.sldasm" & rem ""
SubGroup691_FE7IP13_2017-12-12.sldasm" & rem "/bin/parts/Loft-Project.sldasm" & rem ""
我可以在循环外使用相同的行并且没有像这样的 ENABLEDELAYEDEXPANSION:
@ECHO OFF
SETLOCAL
SET "inputstring=Sub_Group691_FE7IP11_2017-12-12.sldasm_bin/parts/Loft-Project.sldasm_bin/parts/Loft-Project"
SET "outputstring=%inputstring:.sldasm=.sldasm & rem "%"
echo %outputstring%
那个输出会给我我正在寻找的东西:
Sub_Group691_FE7IP11_2017-12-12.sldasm
在搜索中,我开始认为 rem 不能这样使用,我必须转向使用伪造分隔符的标记分隔符循环。
我会满足于让它工作,而不是通过努力正确命名文件来担心文件名中的“毒”字符。
感谢您的帮助!
最佳答案
向右截断字符串的 & rem
方法不能用于 delayed expansion (!
),它依赖于正常/立即扩展(%
)。这是因为立即扩展是在命令(如 rem
)被识别之前完成的,但是延迟扩展发生在之后,所以永远不会执行 rem
命令。
但是,您可以在循环中 replace每个 .sldasm
都被禁止使用的字符(如 |
)分割,然后用 for /F
loop 分割字符串,像这样:
@echo off
setlocal EnableExtensions DisableDelayedExpansion
set "InputFile=C:\Scratch\ASMExport.txt"
set "OutputFile=C:\Scratch\InputFiles.txt"
set "Extension=.sdlasm"
> "%OutputFile%" (
for /F usebackq^ delims^=^ eol^= %%A in ("%InputFile%") do (
set "CurrentLine=%%A"
setlocal EnableDelayedExpansion
set "CurrentLine=!CurrentLine:%Extension%=|!"
for /F "delims=|" %%B in ("!CurrentLine!") do (
endlocal
echo(%%B
setlocal EnableDelayedExpansion
)
endlocal
)
)
endlocal
exit /B
延迟扩展已切换,以便在启用时不会扩展 for
变量,以避免感叹号丢失或出现问题。
关于string - 在子字符串之后批量修剪文本文件中的行 - REM Trim with Expansion,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47788829/
我认为 trim() 不存储 trim 后的值。 我在用户提交他们的字符串之前对结果应用了 trim 并且它起作用了,它通过删除额外的空间来正确显示。但是如果我取回 trim 后的值,它会给我用户输入
我遇到了一些困惑。 我知道 String 对象是不可变的。这意味着如果我从 String 类调用方法,例如 replace(),则 String 的原始内容不会改变。相反,一个新的 String 被返
下面是一个使用 trim 的简单示例。根据问题的标题,它们之间有什么区别吗?正如您在下面看到的,它们具有相同的输出。如果答案是“否”,使用哪个更好? 目前我使用 .trim() 因为这是我第一次看到
我从工作表中的网站复制了一些数据,注意到一些单元格除了预期值外,还包含尾随空格。 由于给我的代码带来麻烦,我想删除这些空格。我发现了一个有这个空间的特定单元格并尝试了: Worksheets(2).R
vba 中的 trim 和 trim$ 有什么区别?今天无意中在vba中使用left和trim函数时,编译器说找不到项目或库 当我用谷歌搜索它时,在一个论坛上我发现用户使用这样的方式 vba.tri
这个问题已经有答案了: Why does Date.parse give incorrect results? (11 个回答) 已关闭 4 年前。 我知道从字符串创建日期通常是一个坏主意,但这仍然引
jQuery trim 和原生 JavaScript trim 之间有什么区别吗? 是否有其他行为、安全、性能? 最佳答案 JavaScript .trim() 是在 ES 5.1 中定义的,不适用于
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 8 年前。 Improve th
PowerShell 有一个非常好的内置帮助系统,我经常使用它,我可以通过 Get-Help * 查看所有帮助选项。并查询 Cmdlet 或可以使用 Get-Help about_* 查找主题然后说G
查看 jQuery 的源代码: // Use native String.trim function wherever possible trim: trim && !trim.call("\uFEF
如何 trim javascript 日期对象。我有一个日期,格式为(yyyy-d-m)。日期值为 2015-03-03,我想 trim 天数中的前 0,而不是月数。 示例:当我输入:2015-03-
喜欢听听您的意见和理由吗? 我听说深层目录不好,但它与下划线字符相比如何? 最佳答案 使用破折号 - Google 将破折号视为分隔词,但将下划线视为词的一部分。参见 http://www.codin
根据随附的示例工作表,TRIM 似乎无法正常工作,还是我误解了它? 无论哪种方式,目前对我来说非常令人沮丧,因为我有一个电子表格,我必须计算单元格中的单词数,并且由于这个问题,我无法建立一个完全有效/
在这个 jQuery 中,我可以绑定(bind)粘贴事件来验证表单字段,但是我在函数中的方法显然是错误的。我根本没有收到警报。 我只想修剪输入的文本并将其作为表单输入文本字段 #adsense_cli
我有: onclick="document.getElementById('field1').value = Math.round((parseFloat(document.getElementByI
我在页面上有一些小数点后 4 位的价格。有些产品的价格精确到小数点后 4 位,有些则只有 2 位。 目前,我们的网站设置为每种产品显示 4 位小数,我必须使用 JavaScript 来降低那些非 2
我有这棵“树”。 它是一个多维对象。每个“节点”最多有两个属性,分别是 data 和 children。 这是一个例子: {Account: { data: ['stuff'], children:
好吧,伙计们,要么是有一些小问题我没有发现,要么是该 sleep 了。不管是什么,我都非常感谢您的建议。 我正在用 PHP 生成一个 XML 文件。一切都很顺利,直到我输入这一行: $out .= "
我有一个从 AJAX 返回的变量 row['case'] ,它等于“Hello World!”。问题是,当我尝试将其分配给另一个变量时,只有“Hello”被分配,row['case'] =“Hello
我想知道是否可以将整数转换为字符串并在一步内对其进行 trim 。 我有以下对象: 当前表单 { id:1, name:"Abusicus", value:12203, period:"Morning
我是一名优秀的程序员,十分优秀!