【问题标题】:How to create folder name without extension of file type using batch script and move in created sub directory?如何使用批处理脚本创建没有文件类型扩展名的文件夹名称并移入创建的子目录?
【发布时间】:2021-09-26 04:43:03
【问题描述】:

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

目前以错误的方式获得结果:-
下面给出了批处理脚本从这个文件创建文件夹 (7101-1- kutana.pdf) 名称,扩展名为 .pdf,但不完全是我需要的。

我需要的结果正确的方式 a/q 给出以下步骤

例如
第 1 步:-我想从文件名中删除第一个五个字符 (7101-1- kutana)
我还想从文件夹名称中删除扩展名。
源目录=e:\automovesystem\temp
A. 源pdf文件名:- 7101-1- kutana.pdf

第 2 步:-
1-(space)kutanaaward
destdir 名称下创建目录 B. destdir=e:\automovesystem\prpl
创建目录 e:\automovesystem\prpl\1- kutana\award

Step3.根据第一步的文件名检查文件夹名是否可用。

第 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

【问题讨论】:

  • 阅读for /? 的输出,了解为什么Md "%destdir%\%%~nb\award" 2>nul 效果更好。

标签: windows batch-file


【解决方案1】:

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

@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

【讨论】:

    【解决方案2】:

    我自己做的先生我很高兴?? 我对批处理脚本的了解较少,这就是为什么不从昨天开始继续睡觉 致力于制作 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
    

    【讨论】:

      猜你喜欢
      • 2021-07-01
      • 2011-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-30
      • 1970-01-01
      • 2018-04-22
      相关资源
      最近更新 更多