windows 如何使用批处理脚本创建没有文件类型扩展名的文件夹名称,并在创建的子目录中移动?

xhv8bpkk  于 2022-11-18  发布在  Windows
关注(0)|答案(3)|浏览(223)

帮帮我,先生,我试了100多次,但它不完全适合我。

当前获取结果的方式错误:-

下面给出的批处理脚本创建文件夹从这个文件(7101-1-kutana.pdf)名称与.pdf扩展名,但不完全是我需要的。

我需要以正确的方式获得以下步骤所需的结果

比如说
步骤1:-我想删除文件名中的前五个字符(7101-1- kutana
而且我还想从文件夹名称中删除扩展名。
源目录=e:\自动移动系统\temp
A.源pdf文件名:-7101 -1- kutana.pdf
第二步:
destdir名称1-(空格)kutanaaward下创建目录
B.目标目录=e:\自动移动系统\prpl
已创建目录e:\汽车系统\prpl\1- kutana\奖项
步骤3.根据步骤1的文件名检查文件夹名称是否可用。
步骤4:-移动相同的文件夹中,这是在步骤2中创建的子目录下。

@echo off setlocal enableextensions disabledelayedexpansion 
Set "sourcedir=e:\automovesystem\temp" 
Set "destdir=e:\automovesystem\prpl"
For /f "eol=| tokens=1* delims=-" %%a in ('dir /b /a-d-h "%sourcedir%\*-*" 2^>nul') do ( 
Md "%destdir%\%%b\award" 2>nul 
Move /y "%sourcedir%\%%a-%%b" "%destdir%\%%b\award" )
Endlocal
brccelvz

brccelvz1#

除了你自己的答案,我可能会做一点更像这样:

@Echo Off
SetLocal EnableExtensions

Set "SRC=E:\automovesystem\TEMP"
Set "DST=E:\automovesystem\PRPL"

If Not Exist "%SRC%\" (Exit /B) Else If Not Exist "%DST%\" Exit /B

For /F "Delims=" %%G In ('%SystemRoot%\System32\where.exe "%SRC%":"????-?*-?*.*"
 2^>NUL') Do For /F "Tokens=1,* Delims=-" %%H In ("%%~nG"
) Do %SystemRoot%\System32\Robocopy.exe "%%~dpG." "%DST%\%%I\NOTICE" "%%~nxG"^
 /Mov 1>NUL 2>&1
wgxvkvu9

wgxvkvu92#

所有关于这方面的帮助都来自@XionicFire,他重新编写了整个代码,我只是把它发布给其他人使用/受益:
此代码来自几个不同的人@PrahladDixit & @Compo的混合,代码不工作,我们无法告诉为什么在大量搜索后,似乎它遭受了通常的...“一个专业人士写了这个,所以没有人明白他做了什么”综合症,我们蠕虫无法弄清楚它,我们重新制作了它,组织了它,这样普通的人类“蠕虫”就可以理解它在做什么,并使它更友好一点,这样它就更容易根据需要修改和改变,我们希望这能帮助其他人,在windows 11中工作得很好
Code

@ECHO OFF
ECHO This file will create Individual folders inside the current folder using the following Parameters and sort all *.JPG files in current directory accordingly
REM To change target or source directory simply type it in the variable field
SET "SRC=%~dp0"
SET "SRC=%SRC:~0,-1%"
SET "DST=%~dp0"
SET "DST=%DST:~0,-1%"
ECHO. 
REM For Diagnostics & Troubleshooting Purposes
ECHO Source: %SRC%
ECHO Destination: %DST%
ECHO Characters: 19
ECHO Where: %SystemRoot%\System32\where.exe "%SRC%":*.jpg
ECHO. 
ECHO To Cancel this operation press CTRL-C
PAUSE
SetLocal EnableDelayedExpansion
If Not Exist "%SRC%\" (Exit/B) Else If Not Exist "%DST%\" Exit/B
For /F "Delims=" %%A In ('%SystemRoot%\System32\where.exe "%SRC%":*.jpg') Do (
    SET "FNX=%%~nA"
REM Replace 19 for the number of characters from the start of the filename you wish to use as Base for folder creation
    SET "FNX=!FNX:~,19!
REM For Diagnostics & Troubleshooting Purposes
REM ECHO !DST!\!FNX!\
    If Not Exist "!DST!\!FNX!\" (MD "!DST!\!FNX!" 2>NUL
        If ErrorLevel 1 ECHO Unable to create directory !DST!\!FNX!)
    If Exist "!DST!\!FNX!\" (MOVE /Y "%%A" "!DST!\!FNX!">NUL 2>&1
        If ErrorLevel 1 ECHO Unable to move %%A to !DST!\!FNX!)
    )
ECHO ************************ DONE ************************
PAUSE
REM Use in the case of running multiple scripts in a row
REM EXIT/B
egdjgwm8

egdjgwm83#

我有更少的批处理脚本的知识,这就是为什么不睡觉,从昨天继续工作,使AutoMoveFilesystem,但我也非常感谢提供堆栈溢出平台,以创建此代码。我不能没有这个平台。

@Echo Off 

Set "SRC=E:\automovesystem\TEMP"
Set "DST=E:\automovesystem\PRPL"

SetLocal EnableDelayedExpansion
If Not Exist "%SRC%\" (Exit/B) Else If Not Exist "%DST%\" Exit/B
For /F "Delims=" %%A In ('Where "%SRC%":?????????*.*') Do (Set "FNX=%%~nA"
    If Not Exist "%DST%\!FNX:~5,50!\NOTICE" (MD "%DST%\!FNX:~5,50!\NOTICE" 2>Nul
        If ErrorLevel 1 Echo Unable to create directory %DST%\!FNX:~5,50!\NOTICE)
    If Exist "%DST%\!FNX:~5,50!\NOTICE" (Move /Y "%%A" "%DST%\!FNX:~5,50!\NOTICE">Nul 2>&1
        If ErrorLevel 1 Echo Unable to move %%A to %DST%\!FNX:~5,50!\NOTICE))
Timeout -1
Exit/B

相关问题