我有一个包含100张图像的文件夹。所有图像都以这种方式命名:
FOLDER
- MY COOL IMAGE.JPG
- MY COOL IMAGE 2.JPG
- MY COOL IMAGE 3.JPG
...
我需要为每个图像创建一个文件夹,该文件夹的名称与对应图像的名称相同。
FOLDERS
-my-cool-image
- MY COOL IMAGE.JPG
-my-cool-image-2
- MY COOL IMAGE 2.JPG
-my-cool-image-3
- MY COOL IMAGE 3.JPG
...
我在Windows上,正在寻找一个脚本来自动执行此操作。
如果有人可以帮助您提供一些链接和/或示例代码,我将不胜感激。
谢谢。
答案 0 :(得分:1)
这行代码是一个非常简单的解决方案。
FOR %%G IN (*.jpg) DO MD "%%~nG"
~n
修饰符告诉它提供不带扩展名的基本文件名。
要将文件移动到新目录,只需使用move命令。
FOR %%G IN (*.jpg) DO (
MD "%%~nG"
move "%%~G" "%%~nG\"
)
这是带有小写字母和连字符的最终代码。
@echo off
setlocal enabledelayedexpansion
For %%G IN (*.jpg) DO (
set "str=%%~nG"
set "str=-!str: =-!"
call :toLower str
MD "!str!"
move "%%~G" "!str!\"
)
GOTO :EOF
:toLower str -- converts uppercase character to lowercase
:: -- str [in,out] - valref of string variable to be converted
:$created 20060101 :$changed 20080219 :$categories StringManipulation
:$source https://www.dostips.com
if not defined %~1 EXIT /b
for %%a in ("A=a" "B=b" "C=c" "D=d" "E=e" "F=f" "G=g" "H=h" "I=i"
"J=j" "K=k" "L=l" "M=m" "N=n" "O=o" "P=p" "Q=q" "R=r"
"S=s" "T=t" "U=u" "V=v" "W=w" "X=x" "Y=y" "Z=z" "Ä=ä"
"Ö=ö" "Ü=ü") do (
call set "%~1=%%%~1:%%~a%%"
)
EXIT /b
我完全忘记了/L
命令中的DIR
选项。这大大缩短了代码。
@echo off
setlocal enabledelayedexpansion
For /f "delims=" %%G IN ('dir /A-D /B /L *.jpg') DO (
set "str=%%~nG"
set "str=-!str: =-!"
MD "!str!"
move "%%~G" "!str!\"
)
我将添加更多代码示例,因为将其他代码添加到您所问的另一个问题中非常容易。
要在新创建的目录中创建一个空文本文件,将只是一行额外的代码。您使用大于符号的重定向运算符将输出发送到文件。我们将在NUL设备上使用type命令来创建一个空文件。您可以根据需要命名文件。
type nul>"!str!\file.txt"
如果要在文件中放入内容,请使用ECHO
命令。
echo I want this in the text file>"!str!\file.txt"
在MOVE
命令之后使用其中两个示例。
答案 1 :(得分:0)
再次感谢您@Squachman。
现在我的代码如下:
@echo off
setlocal enabledelayedexpansion
For /f "delims=" %%G IN ('dir /A-D /B /L *.jpg') DO (
set "str=%%~nG"
set "str= !str: =-!"
call :toLower str
MD "!str!"
move "%%~G" "!str!\"
type nul>"!str!\file.txt"
echo title: %%~nG>"!str!\file.txt"
)
GOTO :EOF
:toLower str -- converts uppercase character to lowercase
:: -- str [in,out] - valref of string variable to be converted
:$created 20060101 :$changed 20080219 :$categories StringManipulation
:$source https://www.dostips.com
if not defined %~1 EXIT /b
for %%a in ("A=a" "B=b" "C=c" "D=d" "E=e" "F=f" "G=g" "H=h" "I=i"
"J=j" "K=k" "L=l" "M=m" "N=n" "O=o" "P=p" "Q=q" "R=r"
"S=s" "T=t" "U=u" "V=v" "W=w" "X=x" "Y=y" "Z=z" "Ä=ä"
"Ö=ö" "Ü=ü") do (
call set "%~1=%%%~1:%%~a%%"
)
EXIT /b
现在,我需要将.txt文件中添加的文本小写
我接受考试,很高兴学到很多东西;-)