2016-09-21 2 views
0

У меня есть требование, когда мне нужно взять последний файл из папки и сделать дальнейший материал в базе данных. Так что я был в состоянии получить последний файл из папки, как показано нижеэхо-выход, который нужно сохранить как параметр

.os cd "C:\Users\krishha\Desktop\latest\" 
.os for /f "delims=" %%x in ('dir /od /a-d /b *.*') do set recent=%%x 
echo %recent% --GIVES THE RECENT FILENAME 

Я хочу использовать выше вывод т.е. недавнего файла ниже эхо заявления

echo .import vartext ' ' file = C:\Users\krishha\Desktop\latest\'WANT OUTPUT OF ABOVE ECHO HERE' >>C:\Users\krishha\Desktop\latest\h.txt 

Может кто-нибудь помочь здесь?

Я попытался ниже сценарий, но не получает

echo .Logon Teradata/username,password;>> C:\Users\krishha\Desktop\latest\h.txt 
.os cd "C:\Users\krishha\Desktop\latest\" 
.os for /f "delims=" %%x in ('dir /od /a-d /b *.*') do set recent=%%x 
echo %recent% 
echo .import vartext ' ' file = C:\Users\krishha\Desktop\latest\%recent%,skip=1;>>C:\Users\krishha\Desktop\latest\h.txt 
echo .REPEAT * >>C:\Users\krishha\Desktop\latest\h.txt 

--- Я получаю пустой в месте% недавнему%

+0

В своем оригинальном посте вы говорите, что 'echo% recent%' дает правильный выход. Это уже не так? – FloatingKiwi

+0

Что такое префикс '.os' for ?? – aschipfl

ответ

2

Вы просто должны быть в состоянии повторить переменное окружение, где вам хотите, заключая его в процентах знаков, как вы делали раньше:

echo .import vartext ' ' file = C:\Users\krishha\Desktop\latest\%recent%' >>C:\Users\krishha\Desktop\latest\h.txt 

Выполнение followi нг на моем компьютере

for /f "delims=" %%x in ('dir /od /a-d /b .') do set recent=%%x 
echo .import vartext ' ' file = C:\Users\krishha\Desktop\latest\%recent%' 

дает мне

.import vartext ' ' file = C:\Users\krishha\Desktop\latest\test4.bat ' 
+0

Привет, сэр, спасибо за ваш быстрый ответ. Я пробовал делать то же самое, но я не получаю как ниже .import vartext '\t' file = C: \ Users \ krishha \ Desktop \ latest \, skip = 1; - no name даже после размещения% последних% –

+0

, если 'echo% recent%' дает вам то, что вы хотите. Тогда строка, которую я показал, также даст вам то, что вы хотите, если нет другого материала, который вы делаете между ними. Если есть, то сообщите об этом. – FloatingKiwi

+0

Я использую ниже echo .Logon Teradata.gdw.cba/username\password; >> C: \ Users \ krishha \ Desktop \ latest \ h.txt .os cd "C: \ Users \ krishha \ Desktop \ last \ " .os for/f" delims = "%% x in ('dir/od/ad/b *. *') установить последнее = %% x echo% последние% echo .import vartext '\t' file = C: \ Users \ krishha \ Desktop \ last \% recent%, skip = 1; >> C: \ Users \ krishha \ Desktop \ latest \ h.txt echo .REPEAT * >> C: \ Users \ krishha \ Desktop \ latest \ h.txt echo USING (>> C: \ Users \ krishha \ Рабочий стол \ последний \ h.txt echo a varchar (500) >> C: \ Users \ krishha \ Desktop \ latest \ h.txt –

0

я предполагаю, что вы не показываете важную часть вашего пакетного-файла, иначе те решения @FloatingKiwi будет работать.

Perhpas Ваш полный код находится внутри блока круглых скобок, чем он мог бы объяснить ваш результат.

Чтобы избежать проблем с процентом расширения и блоки, вы можете использовать задержанное расширение, которое также позволяет избежать проблем с содержимым, например )&, в вашем последнем имени файла.
И, наконец, я бы построил вывод в одном блоке, так что вам нужно перенаправить файл только один раз.

setlocal EnableDelayedExpansion 
cd "C:\Users\krishha\Desktop\latest\" 
for /f "delims=" %%x in ('dir /od /a-d /b .') do set "recent=%%x" 
(
    echo .Logon Teradata.gdw.cba/username\password; 
    echo .import vartext ' ' file = C:\Users\krishha\Desktop\latest\!recent!,skip=1; 
    echo .REPEAT * 
    echo USING (
    echo a varchar(500^) 
) >> C:\Users\krishha\Desktop\latest\h.txt 
+0

Hi Jeb , Я смог запустить код, данный вами ... спасибо :) еще раз спасибо –

Смежные вопросы