写个bat程序 如果文件名中包含文件夹名则移动文件到文件夹去
时间: 2023-09-09 12:05:02 浏览: 172
### 回答1:
可以使用以下BAT程序:
@echo off
for %%f in (*.txt) do (
set "file=%%~nf"
set "dir=%%~pf"
set "dir=!dir:~0,-1!"
if "!file:~0,7!"=="!dir:~0,7!" (
move "%%f" "!dir!"
)
)
### 回答2:
你可以使用以下的批处理程序来实现将文件移动到文件夹的功能:
```batch
@echo off
setlocal enabledelayedexpansion
set "folder=C:\目标文件夹的路径"
for %%I in (*.*) do (
set "filename=%%~nI"
set "filepath=%%~dpI"
set "foldername=%%~pI"
if "!filename!"=="!foldername!" (
move "!filepath!%%I" "!folder!"
)
)
echo 文件移动完成。
pause
```
请注意,你需要将程序中的`C:\目标文件夹的路径`替换成你想要移动文件的目标文件夹的实际路径。
程序首先会将目标文件夹的路径存储在`folder`变量中。然后通过一个循环遍历当前目录中的所有文件。对于每个文件,程序会将文件名、文件路径和文件夹名分别存储在`filename`、`filepath`和`foldername`变量中。然后,它会检查文件名是否与文件夹名相同。如果相同,则使用`move`命令将文件移动到目标文件夹中。
最后,程序会显示文件移动完成的消息,并等待用户按下任意键退出。
这个程序可以将当前目录中文件名与文件夹名相同的文件移动到指定的目标文件夹中。
### 回答3:
可以使用如下的批处理程序来实现将文件移动到包含文件夹名的文件夹中:
```
@echo off
setlocal enabledelayedexpansion
rem 设置源文件夹和目标文件夹的路径
set "sourceFolder=C:\SourceFolder"
set "destinationFolder=C:\DestinationFolder"
rem 遍历源文件夹中的所有文件
for %%F in ("%sourceFolder%\*.*") do (
rem 获取文件名和文件路径
set "fileName=%%~nxF"
set "filePath=%%~dpF"
rem 判断文件名中是否包含文件夹名
set "folderName=!filePath:%sourceFolder%=!"
set "folderName=!folderName:\=!"
rem 判断是否存在包含文件夹名的目标文件夹
if exist "%destinationFolder%\!folderName!\" (
rem 移动文件到目标文件夹
move "%%F" "%destinationFolder%\!folderName!\"
)
)
echo 文件移动完成!
pause
```
请将程序中的`sourceFolder`和`destinationFolder`变量的值替换为实际的源文件夹和目标文件夹的路径。该程序会遍历源文件夹中的所有文件,判断文件名中是否包含文件夹名,如果包含,则将文件移动到目标文件夹下对应的文件夹中。移动完成后,屏幕上会显示"文件移动完成!"提示信息,并等待用户按下任意键以关闭窗口。
阅读全文