我想移动这些文件(扩展名不相关)
cane pazzo.txt
cane.torrent
incredibile cane s03.xx
进入文件夹
cane
我有这段代码
@echo off
setlocal enabledelayedexpansion
pushd %1
for /F "USEBACKQ tokens=*" %%a in (`dir /b /a:-d`) do (
set "_file=%%a"
for /D %%b in (*) do (
if NOT "x!_file:%%b=!" == "x!_file!" (
move %%a %%b
)
)
)
popd
但我只能移动与文件夹名称相同的文件
cane.torrent --> cane
而是这些文件
cane pazzo.txt
incredibile cane s03.xx
因为文件名中有一个单词,所以不会移到里面。为什么?
使用.bat脚本的任何解决方案?
答案 0 :(得分:2)
你的逻辑是正确的。唯一的一点是move
命令应该将文件括在引号中,因此可以正确处理包含空格的名称:
move "%%a" "%%b"
我也会在比较中消除“x”,因为没有必要:
if NOT "!_file:%%b=!" == "!_file!" (