在第一个空格之前将变量缩减为所有变量

Posted

技术标签:

【中文标题】在第一个空格之前将变量缩减为所有变量【英文标题】:Pare down a variable to all before 1st space 【发布时间】:2020-11-14 21:42:31 【问题描述】:

背景: 有以下代码。第 5 行和第 6 行是这里最重要的:

@echo off

setlocal EnableExtensions DisableDelayedExpansion

pushd "%~dp0" || exit /B

move /Y "Folder2.jpg" "Folder.jpg"

这行5for %%I in (.) do set "FOLDER=%%~nxI"

这行6"%ProgramFiles(x86)%\gallery-dl\gallery-dl.exe" -d "U:\11Web\gallery-dl" --download-archive "%~dp0zzzGDB.sqlite3" "https://www.pixiv.net/en/users/%FOLDER%/illustrations"

if not errorlevel 1 if exist "zzzGDB.sqlite3" del "Folder.jpg"

popd

endlocal

在 Windows 资源管理器中,我创建了一个名为“18604150”的文件夹(例如)。我创建的任何文件夹都将具有不同长度的文件夹名称。上面的代码位于该文件夹中的 .bat 文件中。执行代码后,第 5 行将文件夹名称“18604150”分配给变量,第 6 行将其作为超链接的一部分插入/调用:

https://www.pixiv.net/en/users/%FOLDER%/illustrations

等于

https://www.pixiv.net/en/users/18604150/illustrations

一切都好。

问题: 我希望能够ALWAYS在开头使用上述数字字符串命名文件夹,但在某些情况下还可以手动将艺术家姓名和/或其他详细信息附加到 文件夹名称。问题是我需要在不“破坏”变量并使其无法用于超链接的情况下执行此操作。文件夹名称可以采用多种形式,但始终以完整的第一串数字开头。例子:

18604150 -59 鲍勃·马利-

4839 丹人

19374759394727 史酷比零食 43443

如果存在,我需要将变量减少到任何第一个 SPACE 左侧的数字。

18604150

4839

19374759394727

我猜测第 5 行中的解决方案可能是什么,但我不知道这会是什么样子。

for %%I in (.) do set "FOLDER=%%~nxI"

【问题讨论】:

【参考方案1】:

一个小小的尝试和错误得到了我的答案。感谢https://www.dostips.com/DtTipsStringManipulation.php

@echo off

setlocal EnableExtensions DisableDelayedExpansion

pushd "%~dp0" || exit /B

move /Y "Folder2.jpg" "Folder.jpg"

for %%I in (.) do set "FOLDER=%%~nxI"

for /f "tokens=1 delims= " %%a in ("%FOLDER%") do set FOLDER=%%a

"%ProgramFiles(x86)%\gallery-dl\gallery-dl.exe" -d "U:\11Web\gallery-dl" --download-archive "%~dp0zzzGDB.sqlite3" "https://www.pixiv.net/en/users/%FOLDER%/illustrations"

if not errorlevel 1 if exist "zzzGDB.sqlite3" del "Folder.jpg"

popd

endlocal

pause

【讨论】:

以上是关于在第一个空格之前将变量缩减为所有变量的主要内容,如果未能解决你的问题,请参考以下文章

在第一个空格之前获取字符

Ruby字符串输出

python global怎么用

“在第一个目标之前开始。停止。“错误

将 id 值存储为标量变量,然后在第二个查询中使用

在第一个连字符之前隔离字符串的前导部分并从匹配中省略任何尾随空格