我有一个文件夹,其中有数百万个文件,有点像
XXXXXX_156_1400093_20160507011119.psv
从这种格式我想要一个批处理脚本,它可能要求我在文件名中以yyymmdd seach的格式输入日期。创建一个包含日期的文件夹,并移动与该日期相关的所有文件。
我尝试了多个示例,因为我不知道脚本,请帮助我。 问候 Saurabh
我尝试过以下代码:
@ECHO on
SETLOCAL
SETLOCAL ENABLEDELAYEDEXPANSION
SET "sourcedir=C:\Users\sswarpal\Desktop\files"
PUSHD %sourcedir%
FOR /f "tokens=1,2,3,4 delims=_" %%a IN (
'dir /b /a-d "*.psv"'
) DO (
MD %%a
MOVE "%%a %%b" .\%%a\
)
POPD
GOTO :EOF
答案 0 :(得分:1)
批处理脚本可能要求我以yyymmdd seach格式输入日期 在文件名中的那个日期。创建一个包含日期和移动的文件夹 与特定日期相关的所有文件。
保持简单。将通配符与move
一起使用,而不是使用复杂的for
循环
set /p "day=Enter Date (YYYYMMDD): "
md %day% 2>nul
move "*%day%??????.psv" %day%
如果您想自动执行(如代码所示):仅使用随机参数无效(令牌1 %%a
为XXXXXX
,但您想创建一个带日期的子目录(令牌4的一部分))。您move
的参数似乎完全是随机的
试试这个:
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
SET "sourcedir=C:\Users\sswarpal\Desktop\files"
PUSHD %sourcedir%
FOR /f "tokens=1,2,3,4 delims=_" %%a IN ('dir /b /a-d "*.psv"') DO (
set day=%%d
set day=!day:~0,8!
echo md !day! 2>nul
echo MOVE "%%a_%%b_%%c_%%d" .\!day!\
)
popd
当输出看起来像你想要的那样时,删除单词echo
。
答案 1 :(得分:0)
将以下代码保存在批处理文件中(例如 myMover.bat )。从命令行窗口运行文件时,请在命令行中提供所需的日期作为唯一参数,如:
myMover 20160508
以下是代码:
@ECHO off
SETLOCAL
SETLOCAL ENABLEDELAYEDEXPANSION
if "%1"=="" goto syntax
SET sourcedir="C:\Users\sswarpal\Desktop\files"
PUSHD %sourcedir%
if not exist %1 MD %1
FOR /F %%i IN ('dir /b *_%1*.psv') DO move "%%~ni%%~xi" %1
POPD
goto :eof
:syntax
Echo.
Echo Syntax:
Echo %0 YYYYMMDD
Echo.