Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.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
Windows 从多字字符串中每个字的第一个字符创建新字符串_Windows_Batch File_Cmd - Fatal编程技术网

Windows 从多字字符串中每个字的第一个字符创建新字符串

Windows 从多字字符串中每个字的第一个字符创建新字符串,windows,batch-file,cmd,Windows,Batch File,Cmd,我需要Windows NT命令脚本来执行以下操作: -从命令行读取变量字符串 -获取该变量并根据每个单词的第一个字节创建新字符串 Windows NT命令脚本中的传入字符串为%1。 字符串的长度和字数可能不同,但总是以此处某物[此处某物]结尾 示例-来自命令行的输入值,包括引号: "This is my string for a new name (comment) [comment 2]" 我需要创建的字符串是: Timsfann 这些字符来自上述字符串中每个单词的第一个字母,当到达注释中

我需要Windows NT命令脚本来执行以下操作: -从命令行读取变量字符串 -获取该变量并根据每个单词的第一个字节创建新字符串

Windows NT命令脚本中的传入字符串为%1。 字符串的长度和字数可能不同,但总是以此处某物[此处某物]结尾

示例-来自命令行的输入值,包括引号:

"This is my string for a new name (comment) [comment 2]"
我需要创建的字符串是:

Timsfann
这些字符来自上述字符串中每个单词的第一个字母,当到达注释中的括号时停止

上述字符串将与日期/时间字符串连接,以创建唯一的文件名。完成的字符串应设置为系统变量,以便程序可以找到完成的值

任何帮助都将不胜感激


我一直在尝试使用FOR循环,但似乎无法使其按预期工作。

这只是实现此目的的几种方法之一

@echo off
setlocal enabledelayedexpansion

for /f "tokens=1 delims=(" %%G IN ("%~1") do set "line=%%G"

FOR %%G IN (%line%) DO (
    set tline=%%G
    set code=!code!!tline:~0,1!
)
echo %code%
pause

这只是你能做到这一点的几种方法之一

@echo off
setlocal enabledelayedexpansion

for /f "tokens=1 delims=(" %%G IN ("%~1") do set "line=%%G"

FOR %%G IN (%line%) DO (
    set tline=%%G
    set code=!code!!tline:~0,1!
)
echo %code%
pause
,如果您更容易理解的话,下面是少数几种方法中的另一种,它不使用延迟扩展或for语句:

@回音 调用:循环%1 回显%oStr%&暂停 退出/B :循环 如果%%1==转到:EOF 设置iStr=%~1 如果%iStr:~,1%==转到:EOF 设置oStr=%oStr%%iStr:~,1% Shift&GoTo循环 ,如果您更容易理解的话,下面是少数几种方法中的另一种,它不使用延迟扩展或for语句:

@回音 调用:循环%1 回显%oStr%&暂停 退出/B :循环 如果%%1==转到:EOF 设置iStr=%~1 如果%iStr:~,1%==转到:EOF 设置oStr=%oStr%%iStr:~,1% Shift&GoTo循环
再来一个!虽然这种方法更简单、更短,但可能更难理解


提示:使用echo在另一个上执行它!虽然这种方法更简单、更短,但可能更难理解


提示:使用echo on执行它

请向我们展示您现有的代码。尽管您包含了许多解释,但其中一些解释令人困惑。用于从命令行读取变量字符串的命令已设置/P。您添加:获取该变量。。。然后:Windows NT命令脚本中的传入字符串是%1。您应该注意到%1不是一个在程序运行时可以从命令行读取的变量,而是一个在程序运行前放置在批处理文件名之后的参数。虽然这似乎是一个迂腐的解释,但在描述更复杂的问题时,正确术语的使用可能很重要。请向我们展示您现有的代码。尽管您包含了许多解释,但其中一些解释令人困惑。用于从命令行读取变量字符串的命令已设置/P。您添加:获取该变量。。。然后:Windows NT命令脚本中的传入字符串是%1。您应该注意到%1不是一个在程序运行时可以从命令行读取的变量,而是一个在程序运行前放置在批处理文件名之后的参数。虽然这似乎是一个迂腐的解释,但在描述更复杂的问题时,使用正确的术语可能很重要。它在我正在写的剧本中非常有效。通过检查您的代码,我确信可以了解更多关于FOR语句中如何工作的信息。我想我的主要问题是变量和使用!在他们周围。再次感谢这么好的解决方案!壁球手-谢谢你的回答。它在我正在写的剧本中非常有效。通过检查您的代码,我确信可以了解更多关于FOR语句中如何工作的信息。我想我的主要问题是变量和使用!在他们周围。再次感谢这么好的解决方案!这种方法行不通。您似乎忽略了此描述:Windows NT命令脚本中的传入字符串是%1。示例-来自命令行的输入值,包括引号:这是我的新名称注释字符串[comment 2]此方法不起作用。您似乎忽略了此描述:Windows NT命令脚本中的传入字符串是%1。示例-来自命令行(包括引号)的传入值:这是新名称注释的my字符串[comment 2],如果在第4行设置str=%~1,则如果输入字符串在没有预期字符或尾随空格的情况下传递,将确保%result%不会丢失其最后一个字符。不应该发生,但是,为了一个空间,为什么不呢@你说得对这一点同样适用于左参数……如果在第4行设置str=%~1,则如果输入字符串在传递时没有预期的字符或尾随空格,则可以确保%result%不会丢失它的最后一个字符。不应该发生,但是,为了一个空间,为什么不呢@你说得对同样的点也适用于左面。。。