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
Batch file 使用批处理脚本拆分字符串_Batch File_Split - Fatal编程技术网

Batch file 使用批处理脚本拆分字符串

Batch file 使用批处理脚本拆分字符串,batch-file,split,Batch File,Split,你可以说这是一个重复的问题,但事实是我找不到解决办法。如果你不想接受采访,你可以重新指导 我在变量中有一个文件名为A123_101234_3。 我想根据下划线作为分隔符拆分字符串,然后使用字符串的最后一部分“3”进行进一步比较(它实际上是月数) 感谢您的帮助知道它是第三个元素,并且元素以下划线分隔,您可以使用for/f标记器 for /f "tokens=3 delims=_" %%# in ("A123_101234_3.csv") do set month=%%~n# echo %month

你可以说这是一个重复的问题,但事实是我找不到解决办法。如果你不想接受采访,你可以重新指导

我在变量中有一个文件名为A123_101234_3。 我想根据下划线作为分隔符拆分字符串,然后使用字符串的最后一部分“3”进行进一步比较(它实际上是月数)


感谢您的帮助

知道它是第三个元素,并且元素以下划线分隔,您可以使用
for/f
标记器

for /f "tokens=3 delims=_" %%# in ("A123_101234_3.csv") do set month=%%~n#
echo %month%
设置“输入=A123_101234_3”
对于/f“tokens=3 delims=33;”%%a in(“%input%”)设置“output=%%a”
知道它是输入中的最后一个元素,但不知道有多少元素,您可以将下划线转换为空格,并在元素列表上迭代。这将覆盖保留最后一个元素的输出变量

设置“输入=A123_101234_3”
对于%%a in(“%input:\=”“%”)设置“output=%%~a”
如果数据包含空格或其他分隔符,则可以用反斜杠替换下划线,并将输入作为文件引用处理

设置“输入=A123_101234_3”
对于%%a in(“%input:\%”)设置“output=%%~nxa”

该解决方案运行良好。但是它给我的不是月号而是3.csv,因为文件名的扩展名是.csv。我添加了一个命令,若%month:~-5,1%==3进行比较,但这里的问题是,若月份号有两位数字。我如何解决它?我怎么能忽略它的最后4个字符,这样我就只剩下月数供比较了?感谢您的帮助。@Sharma:在您的问题中,您说:“我在变量中有一个文件名为A123_101234_3”。如果不是这样,但文件名的扩展名是.csv:“A123_101234_3.csv”,那么您应该在原始问题中修改该信息!在评论中发布附加数据是一种非常糟糕的做法,因为你强迫读者阅读所有答案中的所有评论,以便理解你的问题<代码>:(