내 배치 파일 만 1 파일을 열 때도 경로에 더 많은 파일이 있습니다.


-3

내 폴더에서 파일 하나만 열려면 어떻게 코드를 도와 줄 수 있습니까? 그 폴더는 8 파일을 포함합니다

@echo off
setlocal enabledelayedexpansion

:: Extract date fields - language dependent
for /f "tokens=1-4 delims=/-. " %%i in ('date /t') do (
        set v1=%%i& set v2=%%j& set v3=%%k
        if "%%i:~0,1%%" gtr "9" (set v1=%%j& set v2=%%k& set v3=%%l)

        for /f "skip=1 tokens=2-4 delims=(-)" %%m in ('echo.^|date') do (
            set %%m=!v1!& set %%n=!v2!& set %%o=!v3!
    )
)
:: Final set for language independency (English and Portuguese - maybe works for Spanish and French)
set year=%yy%%aa%
set month=%mm%
set day=%dd%
set a=2
set /a c=%dd%+%a%
set var=00%c%
set var=%var:~-2%
:: Testing
echo Year:[%year%] - month:[%month%] - day:[%var%]
start "" EXCEL.exe "\\mwcfs\DC Duty Files\SAP PROCESSING\OSB DOWNLOAD\FOR DOWNLOAD\%year%\%month% December %year%\Day %var%\*.xlsx"
endlocal
pause

(1) 그것은 당신이에서 기대하는 데이터의 형식으로 시작하는 몇 가지 더 의견 (추가 할 경우 사람들이 코드를 이해하는 데 도움이 될 것이다 date명령을, 그리고 당신이 함께 일을하려고하는 당신 v1, v2, v3, m, n, 및 o변수) 및 스크립트가 수행하려는 작업을 전반적으로 설명합니다. (2) 내 (ko 페이지) 시스템에서, echo.|date(귀여운 트릭, 그런데)는 2 줄의 출력을 생성합니다 The current date is: Thu 12/14/2017 및  Enter the new date: (mm-dd-yy). … (계속)
Scott

(계속)…이라고 말하면 skip=1코드가 Enter the new date줄 을 파싱하게 되는데, 이는 의도 한 것이 아닐 것입니다. (3) ... 그것에서 얻는 정보를 사용하지 않는 것을 제외하고 echo.|date때문에, for문이 변수를 설정 m, n그리고 o, 당신은 즉시 당신이 이미 가지고 데이터를 해당 값을 덮어 씁니다. (4) 변수를 설정하고 yy, aa, mm,와 dd어디? 그렇다면 설명해야합니다. … (계속)
Scott

(계속)… 또는 (5) 말할 때 start "" excel *.xlsx찾을 수없는 오류 메시지 (Excel 2013에서)가 표시 되기 때문에 모든 날짜 처리 항목을 제외 할 *.xlsx수 있습니다. 직접 디렉토리 경로를 작성하고 Excel 버전에서와 같은 와일드 카드를 처리 할 수 ​​있는지 테스트 한 적이  *있습니까?
Scott

답변:


0

당신은 사용할 수 있습니다 FOR그 디렉토리에있는 모든 파일을 반복 명령을 다음 각 하나를 엽니 다 엑셀을 사용합니다. PUSHD 명령을 사용하여 작업 디렉토리를 파일이있는 위치로 임시 변경합니다. POPD 명령은 작업 디렉토리를 이전 디렉토리로 되돌립니다.

PUSHD "\\mwcfs\DC Duty Files\SAP PROCESSING\OSB DOWNLOAD\FOR DOWNLOAD\%year%\%month% December %year%\Day %var%\"
for %%G in (*.xlsx) do start "" excel.exe "%%~G"
POPD

다음은 YYYYMMDDhhmmss 형식으로 날짜와 시간을 얻는 더 좋은 방법입니다

REM Get date and time in YYYYMMDDhhmmss format
for /f "tokens=2 delims==." %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"

그러면 20171214150615가 출력됩니다. 그런 다음 set 명령 및 하위 문자열을 사용하여 각 날짜 및 시간 세그먼트에 대한 개별 변수를 작성할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.