Batch file 批处理文件以在文件目录中创建选定文件的文件夹

Batch file 批处理文件以在文件目录中创建选定文件的文件夹,batch-file,directory,Batch File,Directory,当右键单击包含此批处理文件的文件时,我希望能够使用“发送到”功能 @echo off pushd %~dp0 for /f "delims=" %%a in ('dir /b') do ( if not "%%~fa"=="%~f0" ( md "%%~na" 2>nul ) ) popd 它需要为每个选定的文件在与文件本身相同的目录中创建一个带有文件名的文件夹。不需要移动文件 下面的代码有所帮助,但这会为目录中的所有文件创建文件夹,并将其放置在批处理文件的目录中 @echo off p

当右键单击包含此批处理文件的文件时,我希望能够使用“发送到”功能

@echo off
pushd %~dp0
for /f "delims=" %%a in ('dir /b') do (
if not "%%~fa"=="%~f0" (
md "%%~na" 2>nul
)
)
popd
它需要为每个选定的文件在与文件本身相同的目录中创建一个带有文件名的文件夹。不需要移动文件

下面的代码有所帮助,但这会为目录中的所有文件创建文件夹,并将其放置在批处理文件的目录中

@echo off
pushd %~dp0
for /f "delims=" %%a in ('dir /b') do (
if not "%%~fa"=="%~f0" (
md "%%~na" 2>nul
)
)
popd
我相信文件目录需要使用以下函数,但不确定如何调用它

%CD%
我是批处理文件的新手,所以任何额外的解释都会有帮助,但不是必需的

即使它一次只能在一个文件上运行,那也很好,因为它不需要选择文件


接下来是“边走边学”,感谢您的帮助

这应该满足您的需求。在“发送到”菜单中尝试此脚本:

@ECHO OFF
SETLOCAL

:ProcessFile
REM Check if there are any files to process.
IF "%~1"=="" GOTO :EOF

REM Process the current file.
SET NewDir="%~dpn1\"

REM Create the directory if it doesn't already exist.
IF NOT EXIST %NewDir% MKDIR %NewDir%

REM Move to the next selected file.
SHIFT /1

REM Recurse.
GOTO ProcessFile

ENDLOCAL

工作完美,比预期的简单得多。谢谢