【问题标题】:Forfiles - sorting filesForfiles - 排序文件
【发布时间】:2014-01-29 18:48:12
【问题描述】:

我需要编写简单的脚本。重点是对名称为文件名首字母的文件夹中的文件进行排序。我了解操作顺序(获取@fname 的第一个字母;检查文件夹是否存在;创建文件夹;移动文件)但我不明白它是如何在没有代码块的情况下编写的(doend)。 forfiles 会阻止do/end 吗?或者我怎样才能不阻塞地编写这个脚本?

【问题讨论】:

  • 举一个你需要排序的例子。 Forfiles 可能不是最好的工具。
  • @foxidrive 文件test.txt 移动到文件夹t,文件example.exe 到名为e 的文件夹等

标签: cmd


【解决方案1】:

这是另一种方法:

@echo off
   for %%a in (1 2 3 4 5 6 7 8 9 0 a b c d e f g h i j k l m n o p q r s t u v w x y z) do (
      if exist "%%a*" md "%%a" 2>nul & move "%%a*" "%%a"
   )
pause

【讨论】:

  • 是的,但他想要一个没有() 的解决方案。
  • @stephen 我认为 OP 无法将它们集成到 Forfiles 中。那是一个or 的问题,但 OP 必须返回确认或拒绝。 :D
  • 多读几遍这个问题,你可能是对的。无论如何,这两个解决方案清楚地表明了这些块的强大。
  • 谢谢。我使用了类似的方法。但是我使用(*)而不是一组数字和字母,然后使用块do ()。我本来想用forfiles(他似乎更容易)但后来我想出了for并和他一起做了。谢谢。
【解决方案2】:
@echo off

dir /b /a-d *.* >tmp
echo END OF FILE>>tmp
echo -- start --

:loop
set /p file=<tmp
if "%file%"=="END OF FILE" goto :end
if "%file%"=="tmp" goto :ignore

md %file:~0,1%\%file% 2>nul
move "%file%" "%file:~0,1%\%file%"

:ignore
more +1 tmp >tmp2
del tmp
ren tmp2 tmp
goto :loop

:end
echo -- finish --
exit /b

Puh - 我开始喜欢这些积木了 ^^

不需要检查文件夹是否已经存在,md不存在时会生成,存在时会报错(2&gt;nul发送到nirvana)

【讨论】:

    猜你喜欢
    • 2014-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多