1

バッチ ファイルが yyyy/mo/dd/hh/mm/ss をファイル名の先頭に追加する方法を理解できないようです。(Windows 7 を使用) 秒単位の精度が重要です。

実際にはバッチ ファイルである必要はありません。フォルダにファイルを追加するたびに Directory Monitor で実行できる小さなプログラムである必要があります: http://brutaldev.com/page/Directory-Monitor.aspx バッチ ファイルが最も簡単で効率的な方法だと思いますが、他の提案は大歓迎です。

ファイル名が重複する連続番号の付いた多数のファイルを扱っており、それらのファイルをフォルダーに追加するたびに、同じ名前のファイルが存在しないように、それらのファイルの名前を簡単に変更する方法が必要です。これは、現在の日付と時刻をファイル名の先頭に追加する方法と、1 分未満で複数のセットをフォルダーに簡単に追加できるが、1 秒未満ではないため、秒が重要である理由です。バッチ ファイルがファイル拡張子を無視し、フォルダに追加されたファイルの先頭に現在の日付/時刻を単純に追加できれば理想的です。

4

3 に答える 3

1

このコードの最初の 4 行は、信頼できる YY DD MM YYYY HH Min Sec 変数を XP Pro 以降で提供します。

@echo off
for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"
set "YY=%dt:~2,2%" & set "YYYY=%dt:~0,4%" & set "MM=%dt:~4,2%" & set "DD=%dt:~6,2%"
set "HH=%dt:~8,2%" & set "Min=%dt:~10,2%" & set "Sec=%dt:~12,2%"

set "datestamp=%YYYY%%MM%%DD%" & set "timestamp=%HH%%Min%%Sec%" & set "fullstamp=%YYYY%-%MM%-%DD%_%HH%-%Min%-%Sec%"
echo datestamp: "%datestamp%"
echo timestamp: "%timestamp%"
echo fullstamp: "%fullstamp%"

:: this line will rename the files in the current folder which haven't already
:: been renamed by checking for the fullstamp format at the start of the line
:: but it will skip this batch file

for /f "delims=" %%a in ('dir /b /a-d ^|findstr /v "^[0-9]*-[0-9]*-[0-9]*_[0-9]*-[0-9]*-[0-9]*" ') do if /i not "%%a"=="%~nx0" ren "%%a" "%fullstamp% - %%a"

pause
于 2014-07-06T08:54:18.960 に答える
0
   @ECHO off
   SETLOCAL
   IF [%1] NEQ [] goto s_start

   :: Author - Simon Sheppard, July 2003
   :: Tested for Windows NT, 2K, XP 

   ECHO STAMPME.cmd
   ECHO REName a file with the DATE/Time
   ECHO.
   ECHO SYNTAX
   ECHO       STAMPME TestFile.txt
   ECHO.
   ECHO       STAMPME "Test File.txt"
   ECHO.
   ECHO       STAMPME "c:\docs\Test File.txt"
   ECHO.
   ECHO       In a batch file use CALL STAMPME ...

   :: To change the filename format just change around the last line below

   GOTO :eof

   :s_start

    SET _file=%~n1%
    SET _pathname=%~f1%
    SET _ext=%~x1%

    ::Get the date
   ::  note ISO 8601 date format would require 4 digit YYYY Year)

   FOR /f "tokens=6-8 delims=/ " %%G IN ('NET TIME \\%computername%') DO (
         SET _mm=%%G
         SET _dd=%%H
         SET _yy=%%I
     )

   :: Get the time
   FOR /f "tokens=2-4 delims=:." %%G IN ('cmd /c "time<nul"') DO (
         SET _hr=%%G
         SET _min=%%H
     SET _sec=%%I
     GOTO :done
   )
:done
   ECHO Today is Year: [%_yy%] Month: [%_mm%] Day: [%_dd%]
   ECHO The time is:   [%_hr%]:[%_min%]:[%_sec%]

   REN "%_pathname%" "%_hr%-%_min%-%_sec%@%_file%%_ext%"

これは私のために働くようです

于 2012-10-05T10:14:19.813 に答える