0
我正在寻找一个简短的.bat脚本,它可以拉出部分文件名并将其设置为变量。该文件的名称将始终如一地为以下结构,在一个时间但有可能超过1文件:将部分文件名称拉为变量
B06XTJ8RX3.MAIN.PC_430.jpg
或
B06XTJ8RX3.MRG1 .PC_430.jpg
尽管可能有多个文件,但前10个字符将是相同的。
我想命名'B06XTJ8RX3'作为变量。到目前为止,我只能通过将文件名写入第一个''来完成此操作。插入文本文档,然后拉取文本文件的内容,删除重复的字符串。所有这些似乎都没有必要。
set images=C:\file_path\images\
for /F "tokens=1 delims=." %%A IN ('dir /b %images%') do echo %%A >> dupes.txt
type NUL > asins.txt
for /F %%i in ('type dupes.txt ^| sort') Do (
If NOT "!prev!" == "%%i" (echo %%i>>asins.txt)
set prev=%%i
)
type NUL > dupes.txt
set prev=5000
有没有人有一个简单的解决方案呢?
我意识到我的问题是缺少一些信息(我做了编辑)。文件的数量将是未知的。但是,所有文件将具有相同的前10个字符。我需要的是一个.bat脚本来简单地修剪最后12个字符,在这个例子中保留我的变量= B06XTJ8RX3。 – Garrett
美丽 - 这最后一点有效。如果你有一分钟,你会解释%name%变量是如何工作的?这是一个标准变量吗? – Garrett
'name'不是一个神奇的变量名 - 它可能是'zphhrodh6d',如果这在你的应用程序中有任何意义。'dir'提供'/ b'(基本)形式的文件名列表 - 只有名称'/ a-d'没有目录名。 'FOR/f'分析列表,'tokens = 1'将第一个标记传递给'%% A'(指定的*变量*(标记= 1是默认值并且是冗余的),'delims = .'意味着行使用'.'进行“标记化”,因此该行所需的部分(直到点)出现在'%% A'中,然后将其设置为用户变量(名称无关),其中引号分隔 – Magoo