如何修改此.bat 文件以包含父文件夹的名称?

如何修改此.bat 文件以包含父文件夹的名称?

我创建了这个 .bat 文件并将其添加到我的上下文菜单中,以帮助我在开始新项目时快速创建一组具有预定义名称的文件夹,这节省了我手动创建所有这些文件夹的时间

@ECHO OFF
md 01_Project-Brief 02_Project-Assets 03_Project-Research 04_Project-Snapshots 05_Project-Process 06_Project-Mockups

我的过程是这样的,每当我想开始一个新项目时,我首先创建一个新文件夹并给它命名项目名称,例如“East Oasis”,然后打开该文件夹并在其中从上下文菜单运行批处理文件,它会创建项目文件夹,

我希望创建的项目文件夹的名称包含项目(父文件夹)的名称,而不是只有静态名称

例子:

项目文件夹

任何帮助都值得赞赏。并提前致谢。

答案1

REM get the name of the current folder
       for %%a in (.) do set "curpath=%%~nxa"

REM now make the directories (just one to show the idea)        
       md "06_%curpath%-Mockups"

[...]

答案2

附注:最好抛弃 Batch,使用更现代的方法,其中编写的代码实际上有意义,例如 Python、NodeJS 或 PHP。

我主要出于习惯坚持使用 PHP 来自动化这些事情。

<?php

// List directories in the current dir.
$dirs = glob("*", GLOB_ONLYDIR);

// Find and replace variables.
$find = "_Project";
$replace = "_East Oasis";

// Loop through each directory and replace the name.
foreach ($dirs as $dir) {
  // Skip dir if doesn't contain the $find term.
  if (!str_contains($dir, $find))
    continue;

  // Replace $find with $replace in the string $dir.
  $new_name = str_replace($find, $replace, $dir);

  // Rename the old name $dir to the $new_name.
  rename($dir, $new_name);
}

?>

结果: 结果

答案3

@echo off && Setlocal EnableDelayedExpansion

cd /d "%~dp0" && set "_cd=%cd%"
set "_cd=%_cd:\=" & set /A i+=1 & set "_cd!_i!=%"
set "_folder=Brief,Assets,Research,Snapshots,Process,Mockups"

for %%i in (%_folder%)do set /a "_cnt+=1+0" && =;(
     "%ComSPec%" /v:on /e /c "mkdir "0!_cnt!_!_cd!_%%~i" );=

timeout 05 | tree /a /f & endlocal 

相关内容