我有the following脚本
与具有简单名称的文件配合使用。
但是我需要使用的文件具有以下名称模式:
(#.a#-##-##-## abcd-abcd-## abc_abcdef_a#-##-##)
基本上是字母,数字,一个句点,破折号,连字符和一个逗号的组合,没有空格
您看到#号的地方是数字。
起始编号(#。)从0-10000
文件名介于72到76个字符之间,具体取决于其数字ID。
它们都是相同的类型(但脚本不是扩展名也不重要)
它给出了错误:
该命令的语法不正确。
我的猜测是问题在于文件名以数字开头或名称中带有句点。
我无法删除任何字符,文件名本身也是数据的一部分。
我已尝试在文件顶部使用chcp 65001,但这没有什么不同。
我是非常新的批处理脚本,不确定如何绕过此问题。我尝试搜索该错误,但似乎是一个一般性错误,味精。
@echo off
set /a counter=1
set /a filesperfolder=100
cd dir\dir_main
:loopstart
set dirname=subdir%counter%
md %dirname%
echo %dirname%
dir /b | findstr /v /i "subdir*"> %temp%\temp.txt && for /l %%l in (1,1,%filesperfolder%) do @for /f "tokens=1,2* delims=:" %%a in ('findstr /n /r "^" %temp%\temp.txt ^| findstr /r "^%%l:"') do @move %%b %dirname%\%%b >nul
set /a counter=%counter%+1
for /f "tokens=*" %%a in ('type %temp%\temp.txt ^| find /c /v ""') do set _filesmoved=%%a
del %temp%\temp.txt
IF %_filesmoved% LSS 100 goto done
goto loopstart
:done
cls
echo All files were moved!!
pause
exit
答案 0 :(得分:0)
我进去并删除了不同的字符,以查看导致该问题的特定组合。该问题是由逗号和文件名中的空格引起的。
使用它删除空格和逗号,并用破折号或连字符替换。句点,短划线和连字符不会引起此问题。
import Control.Applicative(liftA2)
degree :: Tree a -> Int
degree = maximum . liftA2 (:) length (map degree) . children
还找到了一个更简单的移动脚本
@echo off
setlocal enabledelayedexpansion
for %%a in (*, *) do (
set file=%%a
ren "!file!" "!file:, =_!"
)