在第一个空格之前将变量缩减为所有变量
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
【讨论】:
以上是关于在第一个空格之前将变量缩减为所有变量的主要内容,如果未能解决你的问题,请参考以下文章